Python Learning之函数参数

版权声明:本文为博主原创文章,未经博主允许不得转载。@ceezyyy11 https://blog.csdn.net/ceezyyy11/article/details/87886637

[Python Learning]函数参数

在笔者学过的编程语言中,Python当属函数参数比较灵活的一门,这次我们来看看Python中的位置参数、默认参数、可变参数、关键字参数、命名关键字参数的简单例子。
本文参考廖雪峰的官方网站:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000

位置参数

顾名思义,调用函数传递参数时按照参数的位置进行传递。
让我们来看一个简单的例子:

计算x的n次方

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 22 22:34:01 2019

@author: ceezyyy11
"""

def pow(x,n):
    res=1
    while(n>0):
        res=res*x
        n=n-1
    return res

print(pow(5,2))

默认参数

目的是简化函数的调用,降低调用函数的难度

举个栗子(举个例子),大学新生注册,需要传入name和gender这两个参数。

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 22 22:45:12 2019

@author: ceezyyy11
"""

def enroll(name,gender):
    print('name:',name)
    print('gender:',gender)
    
print(enroll('Michael','M'))

但如果需要增加其他参数,即增加city,age,major等信息,则是调用函数难度增大,这是默认参数就派上用场了:

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 22 22:45:12 2019

@author: ceezyyy11
"""

def enroll(name,gender,city='Shenzhen',age=20,major='CS'):
    print('name:',name)
    print('gender:',gender)
    print('city:',city)
    print('age:',age)
    print('major:',major)
    
print(enroll('Michael','M'))

需要注意传入参数的格式规范,看下面:

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 22 22:45:12 2019

@author: ceezyyy11
"""

def enroll(name,gender,city='Shenzhen',age=20,major='CS'):
    print('name:',name)
    print('gender:',gender)
    print('city:',city)
    print('age:',age)
    print('major:',major)
    
print(enroll('Michael','M'))
print(enroll('Kobe','M','Los Angles'))#默认参数按顺序
print(enroll('JAYZ','M',major='Art'))#默认参数不按顺序

在这里插入图片描述

定义默认参数要牢记一点:默认参数必须指向不变对象!(可变对象有list和dict)

(“道路千万条,安全第一条;代码不规范,两行泪啊!”)

可变参数

顾名思义,参数的数目可变,可多可少,范围从0,1,2,3,…
下面进入一个例子,计算a2 +b2 +c2 +…+

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 22 23:04:05 2019

@author: ceezyyy11
"""

def abc(*args):
    sum=0
    for x in args:
        sum+=x*x
    return sum

nums1=(1,2,3,4)
nums2=[2,3,4,5]
print(abc(1,2,3))
print(abc(*nums1))#参数为tuple
print(abc(*nums2))#参数为list

Python允许你在list或者tuple前加一个*号,表示把list或者tuple里面每个元素作为可变参数传入函数里面,很有用,很常用。

关键字参数

关键字参数(关键字英文为keyword),第一次接触感觉很神奇,关键字参数在函数内部自动组装成一个dict。
进入例子:

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 22 23:13:04 2019

@author: ceezyyy11
"""

def person(name,age,**kw):
    print('name:',name)
    print('age:',age)
    print('other',kw)
    
print(person('LeBorn',34))
print(person('Ivring',29,city='Boston'))
personal={'Brand':'Nike','height':193}#定义一个dict
print(person('Ivring',29,**personal))

在这里插入图片描述

命名关键词参数

好奇怪的函数参数啊!)限制关键字参数的名字,就可以用命名关键字参数
详情请查阅:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000

猜你喜欢

转载自blog.csdn.net/ceezyyy11/article/details/87886637