python版本: 3.X
for循环
- 表示从0到4:
for x in range(5):
print(x)
2. 循环特定的几个数字
for x in (1,4,12,2):
print(x)
此时x依次为 1,4,12,2
for x in [1,4,12,2]:
print(x)
此时x依次为 1,4,12,2
3. 指定从几开始循环
x从0开始,到 <10 结束,每次加3
for i in range(0, 10, 3) :
print(i)
x依次为0,3,6,9
x从-10开始,到<-100结束,每次-30
for i in range(-10, -100, -30) :
print(i)
x依次为-10,-40,-70
5.
6.
global
- 第1种情况
number=1
def test():
print(number1)
此时输出1
- 第2种情况
number=1
def test():
print(number1)
global number1;
此时, global number1这行则会报错:SyntaxError: name ‘number1’ is used prior to global declaration
3. 第3种情况
将代码改成:
number=1
def test():
global number1;
print(number1)
此时运行正常。
4. 第4种情况
若将代码改成:
number=1
def test():
print(number1)
number1=22
则报错:UnboundLocalError: local variable ‘number1’ referenced before assignment
说实话,我也没闹懂为啥。。。。
建议看这: https://www.cnblogs.com/snake-hand/archive/2013/06/16/3138866.html
引用传递和值传递
java的方法有引用传递和值传递这么一说,个人觉得python都是引用传递。只要用=重新赋值,就相当于java的new。但如果没有重新赋值而是进行操作,则会对方法外的变量生效。
- 第1种情况
def test(a):
a.append(4)
print(a)
a=[1,2,3]
test(a)
print(a)
则两次都输出[1,2,3,4],说明是引用传递。
- 第2种情况
但如果使用=重新赋值,相当于new,此时对方法内的改变对方法外的实参不会生效。
def test(a):
a=[1,2,3,4]
print(a)
a=[1,2,3]
test(a)
print(a)
先输出[1,2,3,4], 再输出[1,2,3]
- 若对形参操作后再重新赋值,则重新赋值前的操作对实参仍然生效;赋值后的操作对实参无效。
def test(a):
a.append(5)
a=[1,2,3,4]
print(a)
a=[1,2,3]
test(a)
print(a)
先输出[1,2,3,4],再输出[1,2,3,5]
- 加上global,会怎么样?
def test(a):
global a
a.append(4)
print(a)
a=[1,2,3]
test(a)
print(a)
global a那行报错: SyntaxError: name ‘a’ is parameter and global
但如果把形参a去掉,
def test():
global a
a=[1,2,3,4]
print(a)
a=[1,2,3]
test(a)
print(a)
则两次都输出[1,2,3,4]
结论:java的引用传递用在python里一模一样。