函数:函数就是实现某一特定功能的代码块;在类中,函数又叫方法(对某一个功能的封装)
为什么要使用函数?
飞机的功能: 左移、右移、上移、下移、发射子弹等
a.没有函数的时候:
问题:1.一样的功能对应的代码,需要重复写很多次 (代码冗余)
1. 如果功能发生改变的时候,需要修改很多位置的代码
b.怎么解决上面的问题: 使用函数
函数作用: 1.让界面简洁(同样的功能对应的代码只写一遍)
2.如果功能发生改变,使用函数只需要修改一个地方的
3.让代码模块化
print()、input()、len()、max()、min()等,都是python内置函数
append()、insert()等是相关类对应的函数
a.格式
def 函数名(参数列表):
说明文字
函数体
def: 是python中声明函数的关键字
函数名: 标识符,PEP8,见名知义(根据函数名大概知道函数的功能)
(): 固定格式,不能省略
参数列表(形参): 参数的作用就是从外面往函数中传值。一个函数可以有没有参数,也可以有多个参数。如果有多个参数,参数间用逗号隔开
冒号: 固定的格式
说明文字: 对函数功能进行说明
函数体:就是实现函数功能的代码段
.对于初学者来说,声明函数的步骤:
1. 确定函数的功能(确定函数是干什么的)
2. 确定函数名 (根据功能确定函数名)
3. 确定参数 (确定是否有参数,确定参数有几个,看实现这个功能需不需要从外面传值进去)
4. 确定是否需要返回值 (返回值:就是函数返回给调用者的数据。python中所有的函数都有返回值,默认是None)
5. 实现函数的功能
注意:函数只要在调用的时候才会执行
“”“
“””
格式:
函数名(参数列表)
函数名: 你声明的需要调用的函数(已经声明过的函数才可以调用)
参数列表:实参
函数的调用过程:就是用实参给形参赋值,并且执行函数体获取返回值
“”“
写一个函数,打印’hello python’
声明函数hello
def hello():
“”“打印 ‘hello python’ “””
print(‘hello python’)
调用函数hello
re = hello()
print(hello())
注意: 1.一个函数声明后,可以调用多次 2.python中所有的函数调用表达式都有值
写一个函数,去打印10的阶层(1*2*3*…*10)
def jie_ceng():
“”“打印10的阶层”“”
sum1 = 1
for x in range(1, 11):
sum1 *= x
print(sum1)
jie_ceng()
1.函数的声明
def 函数名(参数列表):
说明文字
函数体
形参: 获取从外面传递给函数内部的值
2.函数的调用
函数名(实参列表)
实参:调用函数的时候给函数传的值
“”“
“”“1.带参的函数的声明和调用”“”
写一个函数,打印两个数的和
形参就是变量(声明在函数内的变量)
def my_sum(num1, num2):
打印num1和num2的和
print(num1, num2)
print(num1+num2)
my_sum(30) # TypeError 注意!:函数调用的时候一定要保证每个形参都有值
1.位置参数(用实参依次给形参赋值)
my_sum(20, 10) # 执行这句代码:先将num1 = 10, num2 = 20。再执行my_sum的函数体
my_sum(num2=10, num1=5)
练习: 写一个函数,打印一个数的立方
def cubic(num):
“”“求一个数的立方”“”
print(num**3)
cubic(10)
cubic(num=10)
“”“2.参数的默认值”“”
在python中,函数的参数可以设置默认值(函数声明的时候给参数赋值)。
如果参数设置了默认值,那么调用函数的时候,这个参数可以传参,也不可以不参
写一个函数,问候某人(打印:XXX,how are you!)
def say_hi(name=’XXX’):
“”“问候”“”
print(‘%s,how are you!’ % (name))
函数调用的要求:保证每个参数有值
say_hi()
say_hi(‘张三’) # name=’张三’ , print(‘%s,how are you!’ % (name))
注意:如果声明函数的时候,函数中有多个参数,有默认值参数必须放到没有默认值的参数的后面
def say_hello(message, name=’xxx’):
“”“问候”“”
print(‘%s,%s’ % (name, message))
say_hello(‘你吃饭了吗?’, ‘李四’)
say_hello(‘最近好吗?’)
say_hello(name=’小花’,message=’i love you!’)
say_hello(message=’我恨你!’)
“”“3.参数个数不定”“”
写一个函数,求多个数的和
“””
参数个数不确定的时候,就在参数列表中声明一个变量,前面加一个*;
这个时候这个变量就变成了元祖。函数调用的时候,所有的实参都会添加到这个元祖中
“””
def my_sum2(*nums):
sum1 = 0
for item in nums:
sum1 += item
print(sum1)
my_sum2(10, 2, 30)
my_sum2(1, 2)
my_sum2(1, 2, 3, 4, 5, 6)