Python随记(5)

函数

  1. def 函数名(参数…): 创建函数。需要有返回值(return) ,如果没有使用return语句指定返回值,Python也不是什么都不返回的,Ta会返回一个None对象,所以我们说Python所有的函数都有返回值。def a(): print('hi') ; b=a() >>'hi' ; print(b) >>None并且return可以返回多种类型,用列表或元组括起来就行
  2. 参数的话要是变量,参数从调用的角度来说,分为形式参数和实际参数。形参值函数定义是小括号里的参数,实参是在函数运行中传递进来的参数。
  3. 函数文档:用__doc__获取。print(函数名._doc_),或者help(函数名)

help(print)
Help on built-in function print in module builtins:
print(…)
print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.

  1. 关键字参数:在定义函数时,将参数的名字和位置确定下来,这类称为位置参数,关键字参数就是才传入实参时明确指定形参的变量名,参数之间不存在先后顺序。在调用函数的时候,位置参数要在关键字参数的前面,否则会出错。
  2. 默认参数:在设置函数时,指定的默认值。在调用时,没有实参传入就用默认的参数。位置参数也要在默认参数前面。
  3. 收集参数:实参个数不确定时,在定义函数的时候,形参就可以用收集参数(在前面加个‘*’`)‘ ** ’就是以字典形式传入。
def test(*params):
	print('有%d个参数' %len(params))
test('1','2','3') >>3个参数
def test(*params,extra):  #在收集参数后还要指定其他参数,用关键字参数,否则会被当成收集参数

def f(a,b,*,c):   #‘ * ‘可以单独存在,其后面的那一个必须用关键字参数,否则就会报错。
    return a+b+c  # f(1,2,3)报错,f(1,2,c=3)正确
    
num=(1,2,3,4,5)
print(*num) >>1 2 3 4 5
print(num)  >>(1,2,3,4,5) #' * '在形参中是打包,在实参中就可以解包
a='love'
print(*a) >>l o v e  #解包也适用于字符串,列表等序列类型
def Narcissus():
	for i in range(100,1000)if i == int(str(i)[0])**3 + int(str(i)[1])**3 + int(str(i)[2])**3
			print(i)   #找水仙花数。	

变量的作用域

  1. 局部变量:定义在函数内部的变量,作用范围只有函数内部。不能才外部引用。
  2. 全局变量:在函数外面定义,可以被函数使用,在函数内部创建一个同名变量时,不会去改变全局变量。
  3. global关键字:用于在函数内部修改全局变量。
count = 5
def a():
	global count
	count = 10
	print(count)
a() >>10
count >>10
  1. 内嵌函数:在函数内部在创建另一个函数。内部函数的作用域就是外部函数,在外部时不能调用内嵌函数的,内部函数引用外部的变量。
x=1
def a1():
	x=2
	def a2():
		x=3
		print(x)
	a2()   #使a2()发挥作用
>>> 3  #这三个变量虽然名字相同但是他们时不同的对象。
  1. 闭包:就是在内部函数里,对非全局作用域的变量进行引用,这个内部函数就是一个闭包。在内部函数中,只能对外部函数的局部变量进行访问,但不能进行修改。如果希望在内部函数去修改外部函数的局部变量值,用nonlocal关键字 用法同global
def funx(x):
	def funy(y):
		return x*y
	retrun funy
funx(5)(8)  #为内嵌函数赋值
>> 40
def funx():
	x=5
	def funy():
		nonlocal x  #nonlocal关键字可以修改外层函数的变量
		x+=1
		return x
	return funy

注:return funy funy就不会被调用,可以赋值给别的变量a=funx() print(a) >>6 print(a) >>7变量a就可以调用funy(),若是return funy() 就是返回fany()执行后的值a=funx() print(a) >>6 print(a) >>6
6. 强制位置参数:Python3.8 新增了一个函数形参语法 / 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。在以下的例子中,形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 或 f 要求为关键字形参:def f(a, b, /, c, d, *, e, f): print(a, b, c, d, e, f)

发布了25 篇原创文章 · 获赞 0 · 访问量 311

猜你喜欢

转载自blog.csdn.net/weixin_46192930/article/details/104760758