一、函数
1、函数定义
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
分类:自定义函数(程序员自己声明实现其功能)和内置函数(系统已经声明实现完成)
2、函数语法
def 函数名(参数列表):
函数体
说明:
a、def——》Python中声明函数的关键字;
b、函数名——》标识符,要求同变量名,不能是关键字;
遵守PEP8命名规范(所有字母小写,单词之间下划线隔开)
见名知义(看见名字知道函数的功能)
c、()——》固定格式
d、参数列表——》形参列表;参数名1,参数名2,.....(逗号隔开)
可以有多个参数,亦可以没有;
参数是用来从函数的外部给函数里面传值用的;
e:——》固定格式
f:函数体——》实现函数功能的代码段;
3、初学者声明函数的步骤
a、确定函数的功能
b、根据功能确定函数名
c、确定参数:确定参数有无,参数个数(看函数功能需不需要从函数外面传值,需要传几个)
d、实现函数功能
e、确定返回值
写一个函数,打印两个数的和
def sum_me(num1,num2):
print(num1+num2)
sum_me(11,22)
写一个函数,打印5个hello
def hello5():
print("hello"*5,sep='====')
hello5()
打印n个hello
def hello_n(n):
print("hello"*n,sep='==')
hello_n(3)
练习:写一个函数,计算1+2+3+....n的和
def sum_n(n):
sum_n=0
for x in range(1,n+1):
sum_n += x
print(sum_n)
sum_n(40)
二、函数调用
'''声明函数的时候,不会执行函数体。函数体只有在函数调用的时候才会执行
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行
语法:函数名(实参列表)
说明:
函数名——》必须是已经声明过的函数
()——》固定的
实参列表——》数据1,数据2,...;实参是用来给形参赋值的'''
函数的调用过程(重点)
第一步:回到函数声明的位置
第二步:用实参给形参赋值(传参,一定要保证每个形参都有一个实参为其赋值)
第三步:执行函数体
第四步:返回返回值(默认None,返回给函数调用表达式)
第五步:回到函数调用的位置(函数表达式),执行之后的代码
三、函数参数
1、位置参数和关键字参数
def func1(a,b,c):
print('a:',a,'b',b,'c',c)
func1(11,22,33)#位置参数:按照实参的顺序一一给形参赋值
func1(c=99,a=88,b=77)#关键字参数:形参1=实参1,形参2=实参2,形参3=实参3,...
2、默认参数
函数声明的时候可以给参数设置默认值,但是有默认值的参数必须放在没默认值的参数后面
def func1(a,c,b=0):
print('a:',a,'b',b,'c',c) #a: 11 b 0 c 22
func1(11,22)#由于形参b有默认值,故可以不写与之对应的实参
3、不定长参数
参数个数不确定的时候,可以在形参前面加*,将这个形参变成一个元祖,用来接收多个参数
如果函数有多个形参,那么不定长参数要放在最后
def func1(*nums):
print(nums)
func1()
func1(1)
func1(1,3)
func1(1,2,'abc')
def func2(name,*nums):
print(name,nums)
func2('alice',2,'abc')
四、函数的返回值
函数的返回值就是函数调用表达式的值,就是return关键字后面的表达式的值
Python中所有的函数都有返回值,返回值默认是None
执行函数体没有遇到return,函数的返回值就是None;遇到了return函数的返回值就是return后面的值
函数调用表达式——》调用函数的语句——函数名(实参)
return——》关键字,只能写在函数体中。用来返回返回值和结束函数
情况一:没有遇到return
def hello5():
print("hello"*5,sep='====')
print(hello5()) #这一步会执行两道命令,第一道是执行函数体,第二步是打印函数体的返回值;
###### 故结果是
###### hellohellohellohellohello
###### None
list=['返回值',hello5()]
print(list) #['返回值', None]
情况二:遇到return
执行函数时,一旦遇到return,函数就直接结束,并且把return后面的结果作为返回值
def x():
print('===')
print('!!!')
return 100
print('///')
x()
#会打印===,!!!,但不会打印///,因为执行不到这段代码。
print(x()) #返回值100
注意:并不是只要函数体中有return,函数返回值就是return后面的值;要函数体在执行过程中遇到return,才返回return后面的值;
def x():
n=2
if n%2:
return 100
print('///')
print(x()) #会打印///,返回值为None,并非100,因为没遇上return
如果实现函数的功能会产生新的数据,就将新的数据返回。如果不会产生新的数据就不用返回值
写一个函数,功能是计算一个数的阶乘
def jie_ceng(num):
sum1 = 1
for x in range(1, num+1):
sum1 *= x
return sum1
re = jie_ceng(10)
print(re) #3628800
print('===%d===' % re) #===3628800===
list1 = [re, re]
print(list1) #[3628800, 3628800]
网友评论