相关疑难解决方法(0)

是否可以仅在没有在Python中赋值的情况下声明变量?

是否可以在Python中声明变量,如此?:

var
Run Code Online (Sandbox Code Playgroud)

所以它初始化为None?似乎Python允许这样做,但是一旦你访问它,它就会崩溃.这可能吗?如果没有,为什么?

编辑:我想这样做的情况:

value

for index in sequence:

   if value == None and conditionMet:
       value = index
       break
Run Code Online (Sandbox Code Playgroud)

重复

有关

python variable-assignment variable-declaration

260
推荐指数
4
解决办法
45万
查看次数

什么是Python 3.5中的类型提示

__CODE__据说其中一个被谈到的功能__CODE__.

的例子__CODE__本中提到的文章同时也提到使用类型负责任提示.有人可以解释更多关于它以及什么时候应该使用它什么时候不使用?

python type-hinting python-3.x python-3.5

216
推荐指数
3
解决办法
9万
查看次数

在Python中明确声明变量类型

我使用pyscripter进行编码,它支持自动完成.所以,当我说:

a = []
a.
Run Code Online (Sandbox Code Playgroud)

它给了我所有的列表功能.我也喜欢用字符串b=''.

但对于file类型,我必须使用file.并选择函数并编写其参数,然后file用变量名替换.

有没有办法在Python中显式声明变量类型,以便我的IDE更有用?

python pyscripter

13
推荐指数
3
解决办法
1万
查看次数

Python:我应该避免在块内部对变量进行初始化吗?

问题

我有这样的代码

if condition:
    a = f(x)
else:
    a = g(y)
Run Code Online (Sandbox Code Playgroud)

a块内部的初始化对我来说很糟糕.可以写得更好吗?

我不能使用三元运算符,因为函数和/或参数列表的名称很长.说"长"我的意思是以下表达式

a = f(x) if condition else g(y)
Run Code Online (Sandbox Code Playgroud)

需要超过79(有时甚至大于119)的符号使用实名的代替a,f,g,x,ycondition.使用多个斜杠会使代码变得丑陋和混乱.

我不想a用默认函数初始化其中一个函数的结果,因为这两个函数都很慢,我不能允许这样的开销

a = g(y)
if condition:
    a = f(x)
Run Code Online (Sandbox Code Playgroud)

我可以初始化变量None,但这个解决方案是否已足够?

a = None
if condition:
    a = f(x)
else:
    a = g(y)
Run Code Online (Sandbox Code Playgroud)

让我解释一下我的立场:在C和C++中,块内部的变量都以块作为其范围.在ES6 let中引入了关键字 - 它允许使用与C和C++中的变量相同的范围规则创建变量.使用old var关键字定义的变量具有与Python类似的范围规则.这就是为什么我认为如果我想在这些块之外使用变量,那么变量的初始化应该在块外部进行.

更新

这是一个更复杂的例子

for obj in gen:
    # do something with the `obj`
    if …
Run Code Online (Sandbox Code Playgroud)

python variables scope

5
推荐指数
2
解决办法
1412
查看次数

python中的函数

我试图在python中编写一个线性同余生成器,我在维基百科上找到一小段代码,但在理解它时遇到一些困难.代码如下:

def lcg(modulus, a, c, seed=None):
    if seed != None:
        lcg.previous = seed
    random_number = (lcg.previous * a + c) % modulus
    lcg.previous = random_number
    return random_number / modulus
lcg.previous = 2222
Run Code Online (Sandbox Code Playgroud)

我的问题是什么是" lcg.previous"?我注意到函数已经完成,lcg.previous更新和存储的值.它是在这里声明为函数lcg()的成员变量还是实际上为python中的所有函数设置了某种默认设置?

非常感谢!

python function

4
推荐指数
1
解决办法
187
查看次数

python中的作用域和输入规则

我是python编程的初学者,我编写了以下程序,试图理解作用域和输入规则.

  a = 5                                                                                                                                                                                                 
  print(a)
  a = "Hello World"
  print(a)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出.

  5
  Hello World
Run Code Online (Sandbox Code Playgroud)

我知道变量是在python中动态输入的.解释器理解当a=5分配发生时,'a'是一个整数.为同一个变量分配字符串值时,为什么不给出错误

python

3
推荐指数
2
解决办法
189
查看次数

在Python中声明类变量的两种方法中的最佳方法

我通常声明在Python中的实例中使用的类变量的方式如下:

class MyClass(object):
  def __init__(self):
    self.a_member = 0

my_object = MyClass()
my_object.a_member    # evaluates to 0
Run Code Online (Sandbox Code Playgroud)

但以下也有效.这是不好的做法吗?如果是这样,为什么?

class MyClass(object):
  a_member = 0

my_object = MyClass()
my_object.a_member    # also evaluates to 0
Run Code Online (Sandbox Code Playgroud)

第二种方法在Zope上使用,但我还没有在其他任何地方看到它.这是为什么?

编辑:作为对sr2222答案的回应.我知道这两者本质上是不同的.但是,如果该类仅用于实例化对象,则两者将以相同的方式工作.那么使用类变量作为实例变量是不是很糟糕?感觉就像是,但我无法解释原因.

python class

1
推荐指数
1
解决办法
279
查看次数

从单个列表python打印

编辑:

 ['Station 5 average is less than 1.62644628099', 'Station 6 average is less than 1.62644628099', 'Station 7 average is less than 1.62644628099', 'Station 8 average is less than 1.62644628099', 'Station 9 average is less than 1.62644628099', 'Station 10 average is less than 1.62644628099']
Run Code Online (Sandbox Code Playgroud)

['Station 1 average is greater than 1.62644628099', 'Station 2 average is greater than 1.62644628099', 'Station 3 average is greater than 1.62644628099']
Run Code Online (Sandbox Code Playgroud)

是否有一个代码可用于生成结果,以便打印时的输出如下所示

Station 5 average is less than 1.62644628099
Station 6 average is less than 1.62644628099 …
Run Code Online (Sandbox Code Playgroud)

python printing list

1
推荐指数
1
解决办法
83
查看次数

为什么哥伦布是Python的第一人?

当我在Codecademy Labs中执行以下代码时: -

 names = [Adam,"Alex","Mariah","Martine","Columbus"]

 for Adam in names:

   print Adam
Run Code Online (Sandbox Code Playgroud)

它打印: -

Columbus

Alex

Mariah

Martine

Columbus
Run Code Online (Sandbox Code Playgroud)

现在,我想问为什么"哥伦布"处于最高位置.我知道我在列表中使用了一个空变量"Adam",并且在"for循环"中使用了相同的变量.它应该是一个"语法错误",因为在列表和"for循环"中使用相同的变量,然后为什么该列表的最后一个元素首先打印出来,最后也打印出来.

python list

0
推荐指数
1
解决办法
294
查看次数

导入我在Python中创建的类

我想导入一个我定义的类,并在另一个文件(main.py)中使用它:

这是我定义的类:

Example.py:

class Example:
  m=0
  n=0

def _init_(self,n,m):
    self.n=n
    self.m=m
Run Code Online (Sandbox Code Playgroud)

main.py

 from Example import *
 p = Example (2,3)
Run Code Online (Sandbox Code Playgroud)

这两个文件都在同一个目录但是当我运行main.py时出现错误:

"TypeError: object() takes no parameters"
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

python

-1
推荐指数
1
解决办法
82
查看次数