python学习笔记(持续更新中)

python版本: 3.X

for循环

  1. 表示从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. 第1种情况
number=1
def test():
	print(number1)

此时输出1

  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. 第1种情况
def test(a):
	a.append(4)
	print(a)

a=[1,2,3]
test(a)
print(a)

则两次都输出[1,2,3,4],说明是引用传递。


  1. 第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]

  1. 若对形参操作后再重新赋值,则重新赋值前的操作对实参仍然生效;赋值后的操作对实参无效。
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]

  1. 加上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里一模一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值