是否可以在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)
我使用pyscripter进行编码,它支持自动完成.所以,当我说:
a = []
a.
Run Code Online (Sandbox Code Playgroud)
它给了我所有的列表功能.我也喜欢用字符串b=''.
但对于file类型,我必须使用file.并选择函数并编写其参数,然后file用变量名替换.
有没有办法在Python中显式声明变量类型,以便我的IDE更有用?
我有这样的代码
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,y和condition.使用多个斜杠会使代码变得丑陋和混乱.
我不想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中编写一个线性同余生成器,我在维基百科上找到一小段代码,但在理解它时遇到一些困难.代码如下:
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编程的初学者,我编写了以下程序,试图理解作用域和输入规则.
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中的实例中使用的类变量的方式如下:
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答案的回应.我知道这两者本质上是不同的.但是,如果该类仅用于实例化对象,则两者将以相同的方式工作.那么使用类变量作为实例变量是不是很糟糕?感觉就像是,但我无法解释原因.
编辑:
['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) 当我在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循环"中使用相同的变量,然后为什么该列表的最后一个元素首先打印出来,最后也打印出来.
我想导入一个我定义的类,并在另一个文件(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 ×10
list ×2
class ×1
function ×1
printing ×1
pyscripter ×1
python-3.5 ×1
python-3.x ×1
scope ×1
type-hinting ×1
variables ×1