码迷,mamicode.com
首页 > 编程语言 > 详细

Python 必选参数,默认参数,可变参数,关键字参数和命名关键字参数

时间:2016-06-10 12:17:27      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

  Py的参数还真是多,用起来还是很方便的,这么多参数种类可见它在工程上的实用性还是非常广泛的。

挺有意思的,本文主要参照Liaoxuefeng的Python教程。

#必选参数
def quadratic(a, b, c):
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)) or not isinstance(c, (int, float)):
        raise TypeError(bad operand type)
    if a == 0:
        return -c / b
    else:
        return (math.sqrt(b * b - 4 * a * c) - b)/ 2.0 / a, ( - math.sqrt(b * b - 4 * a * c) - b)/ 2.0 / a
print(quadratic(2, 3, 1))
print(quadratic(1, 3, -4))

def pow(x, n = 2):
    s = 1
    while(n):
        n -= 1
        s *= x
    return s
print(pow(2,5))

def add_end(L = []):
    L.append(End)
    return L
print(add_end())
print(add_end())

def add_end(L = None):
    if L is None:
        L = []
    L.append(End)
    return L
print(add_end())
print(add_end())

#可变参数
def calc(*nums):
    sum = 0
    for i in nums:
        sum += math.pow(i, 2)
    return sum
num = [1,2]
print(calc(1,2))
print(calc(*num))

#关键字参数
"""关键字参数有什么用?它可以扩展函数的功能。"""
"""比如,在person函数里,我们保证能接收到name和age这两个参数,"""
"""但是,如果调用者愿意提供更多的参数,我们也能收到。"""
"""试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,"""
"""利用关键字参数来定义这个函数就能满足注册的需求。"""
def person(name, age, **kw):
    print(name:, name, age:, age, others:, kw)
    if Schoolin kw:
        print("有School 信息")
person("李金旭", 11, School = [Neu,Swun], Contry = China)

#命名参数
‘‘‘如果要限制关键字参数的名字,就可以用命名关键字参数,
    例如,只接收city和job作为关键字参数。这种方式定义的函数如下:‘‘‘
def person(name, age, *, city, job):
    print(name, age, city, job)
person("李金旭", 11, city = [Neu,Swun], job = China)

def person(name, age, *argv):
    print(name, age, argv)
person("李金旭",11,Neu)

def person(name, age, *, city, job):
    print(name,"is", age," years old in ", city, "as a ",job)
person("李金旭",11,city = "Bejing", job = "IT front to end Engineer")

#参数组合
‘‘‘
    在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。
    但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
‘‘‘
‘‘‘
    *args是可变参数,args接收的是一个tuple;
    **kw是关键字参数,kw接收的是一个dict。
‘‘‘
def func1(a, b, c = 0, *argv, **kw):
    print(a =, a, b =, b, c =, c, args =, args, kw =, kw)
def func2(*argv, **kw):
    print(argv, kw)
args = (1,2,3,4)
kw = {Name:李金旭, Age: 11}
func2(args, kw)

哎,论文还没看完,又搞了半天这些乱七八糟的。。。烦

Python 必选参数,默认参数,可变参数,关键字参数和命名关键字参数

标签:

原文地址:http://www.cnblogs.com/luntai/p/5573424.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!