7.23 python 日学 函数进阶

1.函数参数类型
不可变类型参数:整数,字符串,元组
fun(a)内部修改a的值,只是修改另一个复制的对象,不会影响a本身
可变类型参数:列表,字典
将la真正的传过去,修改后fun内部的la也会受影响

2.传递不可变类型参数

def func(a):

a += 3

print(‘函数内部:’,a)

x = 10

func(x)

print(x)

3.传递可变类型参数

def func(a):

a.append(3)

print(a)

x = [1, 2]

func(x)

print(x)

def func(a=[]):

a.append(10)

print(a)

func()

func()

4.命名空间值保存程序中的变量名和值的地方。命名空间的本质是一个字典,用来记录变量名称和值。字典的key是变量的名称,字典的value对赢的是变量的值。

命名空间一共有三种:局部命名空间,全局命名空间,内置命名空间

局部命名空间访问:
locals()
全局命名空间访问:
globals()
5.

a=3

b=4

def func(x):

c=5

d=6

print(locals())

print(globals())

func(6)

6.命名空间加载顺序
内置命名空间->全局命名空间->局部命名空间

7.命名空间查找顺序
当使用某个变量的时候,先从局部命名空间中找,如果找到就停止搜索,如果找不到就去全局命名空间查找,如果找到就停止搜索,找不到就去内置名称命名空间查找,找不到就报错。

8.作用域
作用域指的是定义位置在程序中的可应用范围
作用域按照变量的定义位置可以划分4类即LEGB
Local (函数内部)局部作用域
Enclosing(嵌套函数的外层函数内部)嵌套作用域
Global(模块全局)全局作用域
Built-in(内建)内建作用域

a=3

b=30

c=300

def hsw():

a=4

b=40

def hsn():

a=5

print(a) #L Local 优先使用局部定义变量

print(b) #E Enclosig 局部作用域没有的,寻找嵌套作用域

print© #G Global 嵌套作用域没有的,找全局作用域

print(name) #B Built-in全局作用域没有的,找内置作用域

hsn()

hsw()

10.全局变量和局部变量
在函数中定义的变量成为局部变量,只在函数内部生效
在函数外部定义的变量成为全局变量,全局变量的作用域是从定义开始到程序结束

global和nonlocal关键字

def func():

global a

a+=10

print(a)

a=20

func()

print(a)

def hsw():

a=9

def hsn():

nonlocal a

a=98

print(‘nei bu’,a)

hsn()

print(‘wai bu’,a)

hsw()

12.内置函数
abs(),max(),map(),filter(),zip()lambda函数
13.在定义函数是不想给函数起一个名字,就可以用lambda定义一个匿名函数
语法:
变量名=lambda 参数:表达式
表达式不能包含循环、return,可以有if else
表达式的结果直接返回

a=[1,2,3,4,5]

x=max(a)

print(x)

a=[-1,-2,-3,-4,-5]

b=max(a,key=abs)

print(b)

a=[{‘name’:‘a’,‘age’:19},{‘name’:‘b’,‘age’:29},{‘name’:‘C’,‘age’:8}]

def getage(x):

return x[‘age’]

b=max(a,key=getage)

print(b)

def hs(x):

return x*x

a=[1,2,3]

b=map(hs,a)

for i in b:

print(i)

def gl(a):

if a%30 or a%70:

return True

else:

return False

a=[1,2,3,4,5,6,7,8,9]

b=filter(gl,a)

print(list(b))

a=[1,2,3]

b=[‘a’,‘b’,‘c’,‘d’]

c=zip(a,b)

for i in c:

print(i)

a=[1,2,3,4,5,6,7,8,9]

print(list(filter(lambda x:x%2==0,a)))

a=[1,2,3]

b=[‘a’,‘b’,‘c’]

print(list(map(lambda a:{a[0]:a[1]},zip(a,b))))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值