在下面的方法定义,什么是*和**为做param2?
def foo(param1, *param2):
def bar(param1, **param2):
Run Code Online (Sandbox Code Playgroud) python syntax parameter-passing variadic-functions argument-unpacking
我主要是一名C#开发人员,但我目前正在使用Python开发一个项目.
我怎样才能在Python中表示Enum的等价物?
我的Google-fu让我失望了.
在Python中,以下两个相等的测试是否等效?
n = 5
# Test one.
if n == 5:
print 'Yay!'
# Test two.
if n is 5:
print 'Yay!'
Run Code Online (Sandbox Code Playgroud)
对于您要比较实例的对象(list比如说),这是否适用?
好的,所以这样的答案我的问题:
L = []
L.append(1)
if L == [1]:
print 'Yay!'
# Holds true, but...
if L is [1]:
print 'Yay!'
# Doesn't.
Run Code Online (Sandbox Code Playgroud)
所以==测试值测试的地方is是否是同一个对象?
什么时候应该使用生成器表达式?什么时候应该在Python中使用列表推导?
# Generator expression
(x*2 for x in range(256))
# List comprehension
[x*2 for x in range(256)]
Run Code Online (Sandbox Code Playgroud) 之间有什么区别:
if foo is None: pass
Run Code Online (Sandbox Code Playgroud)
和
if foo == None: pass
Run Code Online (Sandbox Code Playgroud)
我在大多数Python代码(以及我自己编写的代码)中看到的约定是前者,但我最近遇到了使用后者的代码.None是NoneType的实例(也是唯一的实例,IIRC),所以没关系,对吧?它有什么可能的情况吗?
在Perl 5.10中,我可以说:
sub foo () {
state $x = 1;
say $x++;
}
foo();
foo();
foo();
Run Code Online (Sandbox Code Playgroud)
......它会打印出来:
1
2
3
Run Code Online (Sandbox Code Playgroud)
Python有这样的东西吗?
Perl的习惯很难.变量声明,作用域,全局/本地在两种语言之间是不同的.是否有一组推荐的python语言习语,它们将使从perl编码到python编码的过渡变得不那么痛苦.
微妙的变量拼写错误会浪费大量时间.
我理解变量声明问题在python人员中是准宗教我不是在争论语言变化或功能,只是两种语言之间的可靠桥梁,这不会导致我的perl习惯沉没我的python努力.
谢谢.
python ×7
perl ×2
enums ×1
equality ×1
generator ×1
python-3.x ×1
reference ×1
semantics ×1
syntax ×1
transitions ×1