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)

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

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

  1. python 必选参数、默认参数、可变参数和、关键字参数

    转自:https://www.liaoxuefeng.com/wiki/897692888725344/897693568201440 可变参数 在Python函数中,还可以定义可变参数.顾名思义,可 ...

  2. ES6特性之:参数默认值

    作为一个开发者,跟进行业步伐是非常需要的,不能躺在现有的知识和经验温床上做美梦.JavaScript的ES2015标准(即我们说的ES6)在2016年已经被广泛应用了,还没开始使用的朋友,赶紧来磨一下 ...

  3. ES6参数默认值,剩余参数及展开数组

    一.函数的参数默认值 在ES6之前,想要给参数设置默认值得话,只能在函数体内部加判断设置,比如如果传递参数为undefined时为true, 否则为false,如下图example1,ES6出现语法可 ...

  4. Python星号*与**用法分析 What does ** (double star/asterisk) and * (star/asterisk) do for parameters? 必选参数 默认参数 可变参数 关键字参数

    python中*号**的区别 - CSDN博客 https://blog.csdn.net/qq_26815677/article/details/78091452 定义可变参数和定义 list 或 ...

  5. Python python 函数参数:必选参数,默认参数

    import math # 函数的必选参数 '''函数的必选参数,指的是函数调用的时候必须传入的参数 ''' def cal (n): return n * n var = cal(2) '''上面的 ...

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

    一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_d ...

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

    如果一个函数的参数中含有默认参数,则这个默认参数后的所有参数都必须是默认参数,否则会报错:SyntaxError: non-default argument follows default argum ...

  8. python函数传入参数(默认参数、可变长度参数、关键字参数)

    1.python中默认缺省参数----定义默认参数要牢记一点:默认参数必须指向不变对象! 1 def foo(a,b=1): 2 print a,b 3 4 foo(2) #2 1 5 foo(3,1 ...

  9. Python学习笔记之默认参数

    函数定义时 参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. def test(a,b,c=1,*d,**e) pass

随机推荐

  1. 洛谷 2176 [USACO14FEB]路障Roadblock

    [题意概述] 修改图中任一一条边的边权,使其加倍,问怎样使修改后图中的1~n的最短路最大.输出最短路的增量. [题解] 先跑一遍dijkstra求出1~n的路径长度,记录下经过的边.枚举这些边进行修改 ...

  2. 【BZOJ1014】火星人prefix(splay,Hash)

    题意: . 思路: ; ..,..]of longint; sum,size,fa,a,b,id,mi:..]of longint; n,m,i,x,y,s,k,j,cnt,root:longint; ...

  3. java多线程编程核心技术(三)--线程间通信

    1.等待/通知机制 1.wait()方法:使当前执行代码的线程进行等待.wait()方法是Object类的方法,该方法将当前线程放入“预执行队列”中,并在wait()所处的代码行处停止执行.只到被唤起 ...

  4. 武大OJ 612. Catch the sheep

    Description Old Sama is a great and powerful magician in the word. One day, a little girl, Anny, tou ...

  5. 基本的数据类型分析----java.lang.Number类及其子类分析

    本文转自http://blog.csdn.net/springcsc1982/article/details/8788345 感谢作者 编写了一个测试程序,如下: int a = 1000, b= 1 ...

  6. LeetCode240:Search a 2D Matrix II

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  7. 使用CDN

    CDN的全称是Content Delivery Network.中文直译过来是:内容交付网络. 它的主要意思是,将某些内容进行交付的网络.对于站点开发而言,我们所讲的内容通常指的是内容文件(比如jav ...

  8. LeetCode 939. Minimum Area Rectangle (最小面积矩形)

    题目标签:HashMap 题目给了我们一组 xy 上的点坐标,让我们找出 能组成矩形里最小面积的那个. 首先遍历所有的点,把x 坐标当作key 存入map, 把重复的y坐标 组成set,当作value ...

  9. 怎样设置mysql远程訪问

     Mysql默认是不能够通过远程机器訪问的,通过以下的配置能够开启远程訪问 在MySQL Server端: 运行mysql 命令进入mysql 命令模式, mysql> use mysql; ...

  10. mysql20170407代码实现

    今天用了一会儿sqlyog,感觉还是会让人懒惰,所以选择了ms-dos环境,感觉不错,原生态,敲着很爽; | test01 | | tree | | world | +---------------- ...