Python学习DAY6

1.全局变量与局部变量在这里插入图片描述
注意最后一条:如果在函数内使用全局变量而不声明的话就会报错;因为可能会被当成是局部变量

#测试全局变量,局部变量
a=3
def test01():
    b=4
    print(b*10)
    print(a)
    a=300
    print(a)
test01()
结果:
40
Traceback (most recent call last):
  File "D:/pythonProject/hello.py", line 11, in <module>
    test01()
  File "D:/pythonProject/hello.py", line 6, in test01
    print(a)
UnboundLocalError: local variable 'a' referenced before assignment

进程已结束,退出代码1

所以应该先声明一下,声明之后在函数内对它做的修改,在函数外依然有效。可以看到在函数内把全局变量a改为300,函数外也还是300。

#测试全局变量,局部变量
a=3
def test01():
    b=4
    print(b*10)
    global a
    print(a)
    a=300
    print(a)
test01()
print(a)
结果:
40
3
300
300
进程已结束,退出代码

在函数内如果只想使用局部变量,那就直接用,但是函数外依然是全局变量在起作用

#测试全局变量,局部变量
a=3
def test01():
    a=300
    print(a)
test01()
print(a)

结果:
300
3

进程已结束,退出代码0

可以看到函数内a是300,函数外的a还是3
2.在这里插入图片描述
测试之后可以看到,把可变对象a传给m,地址是一样的,传递对象没有变过,a的值改变了

#测试参数传递
a=[10,20]
print(id(a))
def test02(m):
    print(id(m))
    m.append(300)
    print(id(m))
test02(a)
print(a)

结果:
2077683150216
2077683150216
2077683150216
[10, 20, 300]

进程已结束,退出代码0

传递不可变参数时,仍然是地址在传递,但是在函数内进行赋值操作时会产生一个新的对象,因此id改变了,值改变了,但是a本身不管地址还是数值都没有改变。

#测试参数传递
a=100
print(id(a))
def test02(m):
    print(id(m))
    m+=300
    print(m)
    print(id(m))


test02(a)
print(a)
print(id(a))


测试结果:
1364049184
1364049184
400
2621715885808
100
1364049184

进程已结束,退出代码0

2.浅拷贝与深拷贝
在这里插入图片描述
赋值操作时,浅拷贝会修改”原本”的内容;深拷贝复制”原本’'所有的内容,并且只会在副本上修改。
3.在这里插入图片描述
在这里插入图片描述
4.在这里插入图片描述

f=lambda a,b,c,d: a*b*c*d
print(f(1,2,3,4))

测试结果;
24

进程已结束,退出代码0

5.递归的两个条件:
在这里插入图片描述

def test01(n):
    print("testoq1:",n)
    if n==0:
        print("over")
    else:
        test01(n-1)

    print("test***",n)


test01(4)
结果如下:
testoq1: 4
testoq1: 3
testoq1: 2
testoq1: 1
testoq1: 0
over
test*** 0
test*** 1
test*** 2
test*** 3
test*** 4

进程已结束,退出代码0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值