Python学习第六节

一、函数解析

在这里插入图片描述

1、变量的作用域(全局变量和局部变量)

在这里插入图片描述

a = 100 #原值为100
def AA():
    global a #声明修改全局变量
    print(a) #输出全局变量
    a = 300  #改变全局变量的值

AA() #调用函数
print(a) #输出改变后的值

在这里插入图片描述

超出作用范围:

def AA(XZ):
    XZ += 1 #此处的XZ为局部变量

print(XZ)  #无法输出局部变量,超出作用范围。

在这里插入图片描述

2、参数传递

在这里插入图片描述
可变对象:

b = [1,2] #可变列表
d = b #赋值给d

def AA(d):
    d.append("XX") #修改值,在后面追加"XX"

AA(d) #将d带入实参
print(b) #输出原有的b
print(id(b),id(d)) #输出俩变量的id
print(b is d) #检测b和d是否是一样

在这里插入图片描述
不可变对象:
在这里插入图片描述

a = 2 #int 不可变对象
b = a #将a的值赋值给b,由于不可变对象所以创建了一个新值
a -= 1 # a - 1
print(b) #输出b的值
print(a is b) #a和b不一样

在这里插入图片描述

3、深拷贝和浅拷贝

在这里插入图片描述

import copy #导入copy
def AA():
    a = [1,2,3,4]
    b = copy.copy(a) #浅拷贝
    print("追加前:")
    print("a",a)
    print("b",b)

    b.append(9) #追加内容9

    print("追加后:")
    print("a", a)
    print("b",b)
AA()

在这里插入图片描述

import copy #导入copy
def AA():
    a = [1,2,[3,4],4]
    b = copy.copy(a) #浅拷贝
    print("追加前:")
    print("a",a)
    print("b",b)
    print(a is b)

    b.append(9) #追加内容9
    b[2].append(8) #对可变列表进行追加操作
    b[2].remove(3) #对可变列表进行去除操作

    print("追加后:")
    print("a", a)
    print("b",b)

def BB():
    a = [1,2,[3,4],4]
    b = copy.deepcopy(a) #深拷贝
    print("追加前:")
    print("a",a)
    print("b",b)
    print(a is b)

    b.append(9) #追加内容9
    b[2].append(8)

    print("追加后:")
    print("a", a)
    print("b",b)
AA()
BB()
#总结:浅拷贝只拷贝原有数据,对不可变数据进行增减修改操作并不会影响被拷贝后的数值,但是对可变数据进行修改时会影响到拷贝后的对象。深拷贝则无论怎么修改原数据都不会对拷贝后的数据有影响

输出结果:

追加前:
a [1, 2, [3, 4], 4]
b [1, 2, [3, 4], 4]
False
追加后:
a [1, 2, [4, 8], 4]
b [1, 2, [4, 8], 4, 9]
追加前:
a [1, 2, [3, 4], 4]
b [1, 2, [3, 4], 4]
False
追加后:
a [1, 2, [3, 4], 4]
b [1, 2, [3, 4, 8], 4, 9]

Process finished with exit code 0

二、参数的几种类型

1、位置参数

在这里插入图片描述
在这里插入图片描述

2、默认值参数
###################################默认参数###################################
def AA(a,b,c = 10,d = 20):
    print(a,b,c,d)

AA(1,2) #后面的参数可以不传,因为默认 c = 10, d = 20。输出结果为:1,2,10,20
AA(1,2,3) #虽然 c 默认值为10,但是这里带入了3,所以c的值为3。输出结果为:1,2,3,20

在这里插入图片描述

3、命名参数

在这里插入图片描述

def AA(a,b,c):
    print(a,b,c)


AA(b = 10 , c = 20 , a = 30) #如果实参和形参用的是相同的标识符那么就会通过标识符来一一匹配。
4、可变参数

在这里插入图片描述
元组

def AA(a,b,*c): # 一个*代表将多个元素收集到一个元组中
    print(a,b,c)

AA(1,2,3,4) # 12分别对应a,b。34组成元组

在这里插入图片描述

字典

def AA(a,b,**c): # 两个*代表将多个元素收集到一个字典中
    print(a,b,c)

AA(1,2,name = "ABC",age = 18) # 12分别对应a,b。name = "ABC"和age = 18组成字典

在这里插入图片描述

5、强制命名参数

在这里插入图片描述

def AA(*a,b,c): # 一个*代表将多个元素收集到一个元组中
    print(a,b,c)

# AA(1,2,3) #如果这里这么写的话会报错,因为 *a 为元组其元素可能为:(1,) , (2,) , (3) , (1,2) , (1,2,3) , (1,3) , (2,3)等。
AA(1, b = 2, c = 3) #给每个形参对应赋值就不会报错

在这里插入图片描述

三、lambda表达式和匿名函数

在这里插入图片描述

a = lambda a, b, c: a * b * c # lambda + 形参 : 表达式
print(a)
print(a(1, 2, 3)) # 带入实参输出结果

b = [lambda a, b, c : a + b + c, lambda a, b, c : a - b - c, lambda a, b, c : a* b* c] # 此处b为列表,里面有三个lambda匿名函数元素
print(b[1](1, 2, 3)) #列表中第二个元素(lambda a, b, c : a - b - c)1, 2, 3 带入实参输出结果

在这里插入图片描述

四、eval()函数

在这里插入图片描述

b = 10
c = 20
a = eval("b + c") #读取b,c的值进行加法运算
print(a) #输出值

print(eval("11 + 12")) #直接输出 11 + 12 的值

在这里插入图片描述

五、迭代

第一种:

def AA(a):
    if a < 999:
        a += a
        print(a)
        return AA(a) #return返回本函数进行迭代
AA(1)

在这里插入图片描述

第二种:

def BB(a):
    if a < 999:
        a += a
        print(a)
        BB(a) #直接调用本函数
BB(1)

在这里插入图片描述

2、递归实现阶乘
a = int(input("请输入一个数进行阶乘:"))

def AA(a):
    if a != 1: #避免 1 - 1 = 0 导致结果为 0
        return a * AA(a - 1)
    return a   #如果a为1的时候就返回阶乘结果
print(AA(a))   #输出阶乘结果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值