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

  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 ‘School‘in 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)

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

时间: 2024-10-10 23:43:10

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

Python函数中的必选/默认/可变/关键字/命名参数

Python函数中的必选/默认/可变/关键字/命名参数 一.默认参数 def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s n为默认参数,直接赋值 默认参数设置的两个注意事项: 1.必选参数在前,默认参数在后,否则会报错 2.当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面.变化小的参数就可以作为默认参数. 二.可变参数 在python中,如果我们需要传入不确定数目的参数,就可以利用可变参数 def ca

C++的参数默认值和哑元

一. 函数的参数支持哑元 哑元是一种没有参数名的参数,主要是为了函数间的区别以及向前兼容 二. 函数的参数可以指定默认值,当调用时没有传参,就以默认值进行函数调用. 三. 有默认值的形参必须靠右,声明和定义分开时,默认值必需在声明中指定,定义中不再指定. //默认参数 与 哑元 #include <iostream> using namespace std; /* 1 void print(int *a,int n){ for (int i = 0; i<n; i++) { cout &

转: 命名关键字参数

如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数.这种方式定义的函数如下.命名关键字参数需要一个特殊分隔符,后面的参数被视为命名关键字参数. def person(name, age, *, city, job): print(name, age, city, job) >>> person('Jack', 24, city='Beijing', job='Engineer') Jack 24 Beijing Engineer 转自:Pyth

命名关键字参数

命名关键字参数:在定义函数时,*与**之间参数称之为命名关键字参数 特点: 在调用函数时,命名关键字参数必须按照key=value的形式传值 def func(x,*,y=1,z): print(x) print(y) print(z) func(1,z=2) 原文地址:https://www.cnblogs.com/xiamenghan/p/9709625.html

参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

在Python中定义函数,可以用必选参数.默认参数.可变参数.关键字参数和命名关键字参数,这5种参数都可以组合使用.但是请注意,参数定义的顺序必须是:必选参数.默认参数.可变参数.命名关键字参数和关键字参数. Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数. 默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误! 要注意定义可变参数和关键字参数的语法: *args是可变参数,args接收的是一个tuple: **kw是关键字参数,kw接收的

python-在定义函数时,不定长参数中,默认值参数不能放在必选参数前面

如果一个函数的参数中含有默认参数,则这个默认参数后的所有参数都必须是默认参数,否则会报错:SyntaxError: non-default argument follows default argument 例如: #-*- coding:utf-8 -*-def test(a=11,b,c): #默认值参数不能放在必选参数前面    print(a)    print(b)    print(c)    test(11,22,33) 改正: #-*- coding:utf-8 -*- def

python的位置参数、默认参数、关键字参数、可变参数区别

一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_dict = {1: u'先生', 2: u'女士'} print 'hello %s %s, welcome to python world!' %(name, sex_dict.get(sex, u'先生')) # 两个参数的顺序必须一一对应,且少一个参数都不可以 # print_hello('t

Python中函数的参数定义和可变参数

转自:http://www.cnblogs.com/tqsummer/archive/2011/01/25/1944416.html  简洁易懂啊,好文 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解.其实只要把函数参数定义搞清楚了,就不难理解了. 先说说函数定义,我们都知道,下面的代码定义了一个函数funcA def funcA():  pass    显然,函数funcA没有参数(同时啥也不干:D

Python中函数的参数传递与可变长参数

1.Python中也有像C++一样的默认缺省函数 1 def foo(text,num=0): 2 print text,num 3 4 foo("asd") #asd 0 5 foo("def",100) #def 100 定义有默认参数的函数时,这些默认值参数位置必须都在非默认值参数后面. 调用时提供默认值参数值时,使用提供的值,否则使用默认值. 2.Python可以根据参数名传参数 1 def foo(ip,port): 2 print "%s:%d