Pyhon笔记篇二:函数(自看,更新中)

1.1 函数的全局变量

  • 在python中不要求变量定义和函数定义之前,但是要求变量定义在函数执行之前
def add(a,b):
	local_sum = a+b
	print("函数访问全局变量global_sum", global_sum)
	return local_sum

a = 1
b = 2
global_sum = a + b + a + b
print("输出函数返回:", add(a+b))
  • 函数内修改不会改变全局变量, 除非显示声明
    虽然在函数内可以访问全局变量,但试图改变这个变量时Python会创建一个同名局部变量代替,改变全局变量将只在函数内有效,对函数外无影响。除非用关键词 global 在函数内声明.
  • 在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
def TryTest(a,b):
	a = 11                                 # 对a的改动仅函数内有效
	b = [3,2,1]                            # 对b的改动函数外有效
	global_num = 100                       # 该做法不会报错, 但改变不会作用到函数外
	print("函数内输出global_num = 100")
	return

a = 1
b = [1,2,3]
global_num = 50 
print("函数执行前输出global_num = 50")
TryTest()
print("函数执行后输出global_num 还会是=  50")
def TryTest():
	global global_num                       # 显示声明后,在函数内改变的全局变量,将会影响到函数外
	global_num = 100
	print("函数内输出global_num = 100")
	return

global_num = 50 
print("函数执行前输出global_num = 50")
TryTest()
print("函数执行后输出global_num =  100")

1.2 内嵌函数

Python允许在函数fun1()内再定义一个函数fun2(), 同样内嵌函数的有效范围只在函数内, 即无法再函数外用关键词fun2()直接访问fun2().

def fun1():
	print("fun1正在被调用...");
	def fun2():
		print("fun2()正在被调用...");

	fun2();    # 调用内部函数

1.3 闭包(closure)

如果一个内嵌函数里,只对外部作用域(不包括对全局作用域)的变量进行引用,这个内嵌函数就被认为是闭包。
在闭包中,外部函数的局部变量对于内嵌函数的局部变量,相当于全局函数与局部变量的对应关系。在内部函数中,只能对外部函数的局部变量进行访问,但不能进行修改。否则外部函数的呃变量就会被屏蔽起来。

def funX(x):
	def funY(y):
		# x = x + 5       # 是非法的,当试图改变x,则x被认为是局部变量,等号右边的x就是未初始化的非法值
		return x*y        
	return funY 
	
num =funX(5)
print( num(8) )      # 输出结果为40, 也可以写作 funX(5)(8)

1.4 lambda表达式

Python允许使用lambda关键字来创建匿名函数。

>>> lambda x : 2*x+5        # 会返回一个函数对象
<function <lambda> at 0x000000>
>>> G = lambda x : 2*x +1 
>>> G(5)                       # 返回 11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值