Python学习总结【连载】(七)
2018.06.21 Juttachen
概述
+ 25 函数
- 函数概述
- 函数的声明
- 函数的调用
二十五、函数
1.函数概述
函数就是实现某一特定功能的代码块,在类中,函数又叫方法。
(也就是对某一个功能的封装)
为什么要用函数?
例子:
1.微信飞机大战
飞机的功能:左移、右移、上移、下移、发射子弹等
2.汽车左转右转
没有函数的时候:
问题:
1.一样的功能对应的代码,需要重复写很多次(代码冗余)
2.如果功能发生改变的时候,需要修改很多位置的代码
怎么解决上面的问题:
使用函数
函数的作用
1.让界面简洁(同样的功能对应的代码只写一遍)
2.如果功能发生改变,使用函数只需要修改一个地方的代码
3.让代码模块化
# 汽车向左转
print('看后视镜')
print('踩油门')
print('打转向灯')
print('向左打方向盘')
print('回正方向盘')
# 汽车向右移
print('看后视镜')
print('踩油门')
print('打转向灯')
print('向右打方向盘')
print('回正方向盘')
2.函数的声明(定义实现)
a.格式:
def 函数名(参数列表):
说明文字
函数体
解析:
def:是Python中声明函数的关键字
函数名:一种标识符,要求PEP8,见名知意(根据函数名大概知道函数的功能)
():固定格式,不能省略
参数列表(形参):
1.参数:参数的作用就是从外面往函数中传值的
2.参数列表:一个函数可以没有参数,也可以有一个或多个参数(实质是变量名,如果有多个参数,参数间用逗号隔开)
冒号:是固定格式
说明文字:对函数功能进行说明
函数体:就是实现函数功能的代码段(函数的核心)
*例子:Python的内置函数,如print(),input(),len(),max()等等
python中的列表内置函数,如果append(),insert()等等
b.对于初学者来说,声明函数的步骤
1.确定函数功能(确定函数是干什么的)
2.确定函数名(根据功能确定函数名)
3.确定参数(确定是否有参数,确定参数有几个,看实现这个功能需不需要从外面传值进去)
4.确定是否需要返回值(返回值:就是函数返回给调用者的数据[在Python中所有的函数都有返回值,默认是None])
5.实现函数的功能
注意:函数只有在调用的时候才会执行。
练习:写一个函数,打印'hello python'
def say_hi(x):
''' 打印x中的内容 '''
print(x)
say_hi('hello python')
# 或者
def hello():
''' 打印 “hello python” '''
print('hello python')
hello()
3.函数的调用
a.普通函数的调用
调用格式:
函数名(参数列表(实参))
函数名:你申明的需要调用的函数(已经声明过的函数)
函数的调用过程:就是用实参给形参赋值,并且执行函数体获取返回值。
print(hello())
re = hello()
注意:
1.一个函数声明后,可以调用多次
2.Python中所有的函数调用表达式都有值,默认是None
3. 一定要保证每一个形参都有值
练习:写一个函数,去打印10的阶层
def factorial_print(num):
'''打印num的阶层'''
x = 1
product = 1
while x <= num:
product *= x
x += 1
print(product)
factorial_print(10)
def factorial_10():
'''打印10的阶层'''
product = 1
for x in range(1,11):
product *= x
print(product)
factorial_10()
b.带参的函数
1)函数的声明
声明的时候的参数列表(形参):获取从外面传递给函数内部的值
形参在python中,实质就是变量(就是声明在函数内的变量)
2)函数的调用
实参:调用函数的时候给函数传的值
例子:写一个函数,打印两个数的和
def my_sum(num1,num2):
'''打印num1和num2的和'''
print(num1+num2)
a)位置参数(用实参依次给形参赋值)
my_sum(20,10) #执行这句代码:现将num1 = 10,num2 = 20,再执行my-sum的函数体
# my_sum(30) #TypeError 注意:函数调用的时候一定要保证每个形参都有值
b)关键字参数
my_sum(num2=10,num1=5)
练习:写一个函数,打印一个数的立方
def cubic(x):
'''打印一个数的立方'''
print(x**3)
cubic(10)
cubic(x=10)
3)参数的默认值
在Python中,函数的参数可以设置默认值。
如果参数设置了默认值,那么调用函数的时候,这个参数可以传参,也可以不参。
在声明的时候就可以直接给参数赋值,这时赋的值就是默认值,有默认值的函数可以不传参,但函数结果就与默认值相关。
注意:函数调用的要求是要保证每个参数有值
例子:写一个函数,问候某人(打印:XXX,how are you?)
def say_hi(name='XXX'):
'''问候'''
print('%s,how are you'%(name))
例子:问好
注意:如果声明函数的时候,函数中有多个参数,有默认值的参数必须放到没有默认值的参数的后面。
因为函数参数位置传参的时候默认从前往后传,这样可以省参数
def say_yeah(message,name = 'xxx'):
'''问候'''
print('%s,%s'%(name,message))
say_yeah('aa')
say_yeah('你吃了吗','李四')
say_yeah(name='小花',message='我爱你')
say_yeah(message='再见')
say_yeah('你好')
4)参数个数不定情况
参数个数不确定的时候,就在参数列表中声明一个变量,前面加一个*;
这个时候变量就变成了元组。函数调用的时候,所有的实参都会作为元组的元素。
例子:写一个函数,求多个数的和
def my_sum2(*nums):
print(nums)
my_sum2(10,2,30) #注意:变成元组,就要用元组的方式来做
def my_sum3(*nums):# 注意:在一个文件里函数名是不能重复使用的。
sum1 = 0
for item in nums:
sum1 += item
print(sum1)
my_sum3(10,2,30)
my_sum3(1,2)
my_sum3(1,2,3,4,5,6)