一、函数(function)
1、函数简介
(1)函数也是一个对象,对象是内存中专门用来存储数据的一块区域。
(2)函数可以用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次调用
2、创建函数:
(1)def 函数名 ([形参1,形参2,…形参n]):
代码块
函数名必须要符合标识符的规范(可以包含字母、数字、下划线,但是不能用数字开头)
(2)函数中保存的代码不会立即执行,需要调用函数代码才会执行
3、调用函数
(1) fn是函数对象,fn()调用函数
print是函数对象,print()调用函数
# 定义一个函数
def fn() :
print('这是我的第一个函数!')
# 打印fn
# print(fn) <function fn at 0x0000025FD1511E18>
# print(type(fn)) <class 'function'>
# fn是函数对象,fn()调用函数
# print是函数对象,print()调用函数
# 调用函数
fn()
4、定义函数 — 一般都是要实现某种功能的
二、函数的参数
1、在定义函数时,可以在函数名后的()中定义数量不等是形参,多个形参之间使用,隔开
2、形参(形式参数),定义形参就相当于在函数内部声明了变量,但是并不赋值
3、实参(实际参数)
①如果函数定义时,指定了形参,那么在调用函数时也必须传递实参,实参将会赋值给对应的形参,简单来说,有几个形参就得传几个实参。
②函数在调用时,解析器不会检查实参的类型,实参可以传递任意的类型对象
# 实参可以传递任意类型的对象
def fn(a) :
print ('a=',a)
b=123
b=True
b='hello'
b=None
b=[1,2,3]
fn(b)
4、定义一个函数
(1)定义形参时,可以为形参指定默认值
指定默认值以后,如果用户传递了参数则默认值没有任何作用
如果用户没有传递,则默认值就会生效
def fn(a,b,c=20)
print ('a=',a)
print ('b=',b)
print ('c=',c)
fn(1,2,3) # a=1 b=2 c=3
fn(1,2) # a=1 b=2 c=20
5、参数的传递方式
(1)位置参数
①位置参数就是将对应位置的参数赋值给对用位置的形参
②第一个实参赋值给第一个形参,第二个实参赋值给第二个形参…
(2)关键字参数
①关键字参数可以不按照形参定义的顺序去传递,而是直根据参数名去传递参数
位置参数和关键字参数可以混合使用,混合使用时,必须将位置参数写到前面
# 定义函数时指定形参
def fn( a , b ) :
print ('a =',a)
print ('b =',b)
print (a,'+',b,'=',a+b)
# 调用函数时,来传递实参
fn(10,20)
6、值的传递
def fn(a) :
# 在函数中对形参进行重新赋值,不会影响其他的变量
# 如果形参执行的是一个对象,当我们通过形参去修改对象时
# 会影响到所有指向该对象的变量
a[0] = 30 # 改变量
print ('a =',a )
c = 10
c = [1,2,3] # a和c是同一个对象(改对象)
fn(c)
fn(c.copy()) # 传递的是副本,二者不是同一个对象
print('c=',c)
练习题
1、定义一个函数,可以用来求任意三个数的乘积
def fn(a,b,c):
print (a,'*',b,'*',c,'=',a*b*c)
fn(1,2,3)
2、根据不同的用户名显示不同的欢迎信息
def welcome (username) :
print ('欢迎',username,'光临')
welcome ('肖战')