Python 定义函数

函数是带名称的代码块,用于完成具体的工作,当我们需要在程序中多次执行同一任务时,会产生大量的重复代码

我们可以将重复代码定义为函数,这样每次执行任务时,只需要调用该函数即可

定义函数语法:

def functionname(parameters):
    """函数文档"""
    statement
    return [expression]

1 定义函数实例

1.1 定义无参数函数

下面定义一个不含参数的欢迎函数:

def greet_user():
    print('Welcome!')


greet_user()

执行结果:

该函数没有定义参数,所以引用的时候也不需要输入参数,直接以函数名引用即可

1.2 定义有参数函数

下面定义一个含参数的欢迎函数:

def greet_user(user):
    print('Hello,%s!' % user)


greet_user('Jack')

执行结果:

该函数定义了参数,所以调用的时候必须输入参数

当函数有多个参数时,可以通过位置给参数赋值,但位置不可靠,建议以'参数名=参数'键值对的形式赋值,这样参数的位置就不影响赋值

1.3 给参数指定默认值

定义函数时,可以给参数指定默认值,这样在调用函数时,如果给参数指定值,参数就使用指定的值,否则就使用默认值

def self_introduction(name, country='China'):
    introduction = 'My name is %s,I come from %s.' % (name, country)
    print(introduction)
    return introduction


self_introduction(name='张无忌')
self_introduction(name='成昆', country='Japan')

结果如下:

第一次调用时,没有指定参数country的值,所以使用了默认值;第二次调用时,则使用了指定的参数值

默认参数必须指向不可变的对象

def add_end(list1=[]):
    list1.append('1')
    return list1


print(add_end())
print(add_end())
print(add_end())

代码运行结果是:

原因:函数在定义时,默认参数list1所指定的地址已经确定,而list1是一个list,所以每次调用该函数时,如果改变了列表的内容,则下次调用时,默认参数的内容就会改变

如果确实需要指定一个空的对象,可指定默认值是None,然后在函数内部对参数值判断

1.4 定义可变参数

可变参数:就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个

定义语法:def function(arg,*args):

在函数调用时,*会以单个元素的形式解包一个元祖,使其成为独立的参数

def sum_new(*numbers):
    total = 0
    for n in numbers:
        total = total + n * n
    return total


print(sum_new())
print(sum_new(5))
a = [1, 2, 3]
print(sum_new(*a)) # 将list or tuple做为参数时,加一个*解析为可变参数

结果如下:

1.5 关键字参数

**kwargs表示关键字参数,接收的是dict

def sum_new(year, **users):
    print(year, users)


sum_new(2021, a=1, b=2)

结果如下:

总结:参数的定义顺序为:必选参数-->默认参数-->可变参数-->关键字参数

posted @ 2021-05-08 15:41  弓长无忌  阅读(1087)  评论(0编辑  收藏  举报