| 一、自定义函数def 函数名:
	函数体
 在Python中使用关键字def来定义一个函数,def后面是函数名,只有还有一个冒号,冒号后面的所有缩进行构成了函数体。 def SayHello():
	print("Hello!")
SayHello()
'''输出结果:
Hello!
'''
 1、向函数传递信息参数在函数名后定义,并用括号括起来。 def SayHello(name):
	print(name+"said: Hello!")
SayHello('Tom')
SayHello('Bob')
'''输出结果:
Tomsaid: Hello!
Bobsaid: Hello!
'''
 在SayHell()的定义中,变量name是一个形参——函数完成其工作所需的一项信息。在代码SayHello(‘Tom’)中,'Tom’是一个实参,实参是调用函数是传递给函数的信息。 二、传递实参向函数传递实参的方式很多,可以使用位置实参,这就要求实参的顺序与形参的顺序也相同;也可以使用关键字实参,其中每个实参都由变量名和值组成;还可以使用列表和字典。 1、位置实参调用函数时,Python将函数调用中的每个实参都关联到函数定义中的一个形参。这种关联方式成为位置实参。 def SayHello(Name,Somethings):
	print(Name+" said: "+Somethings+"!")
SayHello('Tom','Hello')
SayHello('Bob','Hi')
'''输出结果:
Tom said: Hello!
Bob said: Hi!
'''
 (1)调用函数多次(2)位置实参的顺序很重要2、关键字实参关键字实参是传递给函数的名称-值对,直接在实参中将名称和值关联起来,因此向函数传递实参时不会混淆。 def SayHello(Name,Somethings):
	print(Name+" said: "+Somethings+"!")
SayHello(Name='Tom',Somethings='Hello')
SayHello(Somethings='Hi',Name='Bob',)
'''输出结果:
Tom said: Hello!
Bob said: Hi!
'''
 此时,关键字实参的顺序已经无关紧要了。 3、默认值编写函数时,可以给每个形参指定默认值。 def SayHello(Name,Somethings='Hello'):
	print(Name+" said: "+Somethings+"!")
SayHello('Tom')
SayHello('Bob','Hi')
'''输出结果:
Tom said: Hello!
Bob said: Hi!
'''
 在使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。 4、等效的函数调用混合使用位置实参、关键字实参和默认值可以混合使用,这样就有多种等效的函数调用方式。 5、避免实参错误如果遇到实参不匹配错误时,首先检查提供的实参是否多与或少于函数完成其工作所需的信息。 三、返回值函数并非总是直接显示输出,更多地是处理一些数据,并返回一个或一组值,函数返回的值被称为返回值。在函数中,可使用return语句将值返回到调用函数的代码行。 1、返回简单值调用返回值的函数时,需要提供一个变量,用于存储返回的值。 def Num_Sum(num1,num2):
	return num1+num2
S_Sum=Num_Sum(12,23)
print(S_Sum)
'''输出结果:
35
'''
 2、让实参变成可选的有时候,需要实参变成可选的,这样使用函数的人就只需要在必要时提供额外的信息,可使用默认值来让实参变成可选的。 "计算两个或者三个数的和"
def Num_Sum(num1,num2,num3=0):
	if num3:
		return num1+num2+num3
	else:
		return num1+num2
S_Sum=Num_Sum(12,23)
S_Sum1=Num_Sum(12,23,12)
print(S_Sum)
print(S_Sum1)
'''输出结果:
35
47
'''
 3、返回字典函数乐意返回任何类型的值,包括字典和列表等较复杂的数据结构。 def Num_Sum(name,age=0):
	Stu={'name':name}
	if age:
		Stu['age']=age
	return Stu
stu=Num_Sum('Tom',23)
print(stu)
'''输出结果:
{'name': 'Tom', 'age': 23}
'''
 4、结合使用函数和while循环def list_Num(num):
	i=0
	while i<num:
		print(i)
		i+=1
list_Num(4)
'''输出结果:
0
1
2
3
'''
 四、传递列表1、在函数中修改列表将列表传递给函数后,函数就可以对其修改,在函数中对这个列表所做的修改是永久性的。 2、禁止函数修改列表使用切片表示法[:]来创建列表副本。 五、传递任意数量的实参1、结合使用位置参数和任意数量实参def my_classes(*myclass):
	print('I like :')
	for myc in myclass:
		print(myc)
my_classes('math')
print('----------------------------')
my_classes('computer','Chinese','Python')
'''输出结果:
I like :
math
----------------------------
I like :
computer
Chinese
Python
'''
 形参名*myclass中的星号让Python创建一个名为myclass的空元组,并将收到的所有值都装到这个元组中。 2、使用任意数量的关键字实参def Stu(name,age,**stu_info):
	Student={}
	Student['name']=name
	Student['age']=age
	for key,value in stu_info.items():
		Student[key]=value
	return Student
stu=Stu('Tom',23,email='160@163.com',Phone='010-6233')
print(stu)
'''输出结果:
{'name': 'Tom', 'age': 23, 'email': '160@163.com', 'Phone': '010-6233'}
'''
 六、将函数存储在模块中1、导入模块首先得创建模块,模块是拓展名为.py的文件,包含要导入到程序中的代码.  
 import 模块名使用:模块名.函数名
 2、导入特定的函数 
 from 模块名 import 函数名 3、使用as给函数指定别名 
 from 模块名 import 函数名 as 函数别名 4、使用as给模块指定别名 
 import 模块名 as 模块别名 5、导入模块中的所有函数使用星号(*)运算符可以让Python导入模块中的所有函数。 文章如有错误,请指正! |