DAY8 Python基础: function 2018-06-
01-knowing the function
02-using thi function
03-parameterized function
01-knowing the function
函数:实现某一特定功能的代码块,在类中,函数又叫方法(对某一个功能的封装)
为什么要使用函数?
飞机的功能:左移、右移、上移、下移、发射子弹等
问题:
1.一样功能对应的代码,需要重复写很多次(代码冗余)
2.如果功能发生改变的时候,需要修改很多位置的代码
使用函数能解决上述问题
函数作用:
1.让界面简洁(同样的功能对应的代码只写一遍)
2.如果功能发生改变,使用函数只需要修改一个地方的代码
3.让代码模块化
02-using thi function
2.1.函数的声明(定义)
print()、input()、len()、max()、min()等,都是python内置函数
append()、insert()等是相关类对应的函数
a.格式:
def 函数名(参数列表):
说明文字
函数体
def:是python中声明函数的关键字
函数名:标识符,PEP8(全部小写,多个单词键用_连接),见名知义
():固定格式,不能省略
参数列表:参数的作用就是从外面往函数中传值的。一个函数可以没有参数,也可以有多个参数(参数间用逗号隔开)。
冒号:固定的格式
说明文字:对函数的功能进行说明
函数体:就是实现函数功能的代码段
b.对于初学者来说,声明函数的步骤:
1.确定函数的功能(确定函数是做什么的)
2.确定函数名(根据功能确定函数名)
3.确定参数(看实现这个功能需不需要从外面传值)
4.确定是否需要返回值(返回值:函数返回给调用者的数据。python中所有函数都有返回值,默认None)
5.实现函数的功能
注意:函数只有在调用的时候才会执行
写一个函数,打印'hello python'
# 声明函数
def HI():
# 打印'hello python'
print('hello python')
# 调用函数
HI()
print(HI())
注意:
1.一个函数声明后可以调用多次
2.python中所有的函数调用表达式都有值
2.2.函数的调用
格式:
函数名(参数列表)
函数名:你声明的需要调用的函数(已经声明了的函数才可以调用)
函数列表:实参
函数的调用过程,用实参给形参赋值,并且执行函数体获取返回值
练习:写一个函数,取打印10的阶乘
def factorial(x):
# 打印参数x的阶乘
y =1
for _ in range(1,x+1):
y *=_
print(y)
factorial(10)
03-parameterized function
3.1.函数的声明
def 函数名(参数列表):
说明文字
函数体
形参:获取从外面传递给函数内部的值
3.2.函数的调用
函数名(实参列表)
实参:调用函数的时候给函数传的值
3.3.带参函数的声明和调用
写一个函数,打印两个数的和
形参就是变量名
def my_sum(num1,num2):
# 打印num1 和 num2的 和
print(num1 + num2)
带参的函数的调用
a.位置参数(用实参一次给形参赋值)
my_sum(10,20) #执行这句代码:先将num1 = 10,num2 = 20,再执行my_sum的函数体
# my_sum(30) # TypeError: my_sum() missing 1 required positional argument: 'num2'
注意:函数调用的时候一定要保证每个形参都有值
b.关键字参数
my_sum(num2=10,num1=2)
练习:写一个函数,打印一个数的立方
def cubic(x):
# 打印一个数的立方
print(x**3)
cubic(3)
3.4.参数的默认值
在python中,函数的参数可以设置默认值(函数声明的时候给参数赋值)
如果参数设置了默认值,那么调用函数的时候,这个参数可以传参,也可以不传,直接使用默认值
练习:写一个函数,问候某人(打印:xxx,how are you!)
def say_hi(name='xxx'):
# 问候
print('%s,how are you!'%(name))
say_hi()
say_hi('Jon snow')
注意:如果声明函数的时候,函数中有多个参数,有默认值参数必须放到没有默认值的参数后面
def say_he(message,name='xxx'):
# extend greeting to
print('%s,%s'%(name,message))
say_he('good afternoon!')
say_he('have you eaten','Neo')
say_he(name='bill',message='i miss you')
say_he(message='go away')
3.5.参数个数不定
参数个数不确定的时候,就在参数列表中声明一个变量,前面加一个*变量就变为元组.函数调用的时候,所有的实参作为一个元组
写一个函数,求多个数的和
def my_sum2(*nums): # *nums变成元组,可以输入多个参数
# 求多个数的和
sum1 = 0
for item in nums:
sum1 += item
print(sum1)
my_sum2(10, 3, 3)