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)
哎,论文还没看完,又搞了半天这些乱七八糟的。。。烦
Python 必选参数,默认参数,可变参数,关键字参数和命名关键字参数的更多相关文章
- python 必选参数、默认参数、可变参数和、关键字参数
转自:https://www.liaoxuefeng.com/wiki/897692888725344/897693568201440 可变参数 在Python函数中,还可以定义可变参数.顾名思义,可 ...
- ES6特性之:参数默认值
作为一个开发者,跟进行业步伐是非常需要的,不能躺在现有的知识和经验温床上做美梦.JavaScript的ES2015标准(即我们说的ES6)在2016年已经被广泛应用了,还没开始使用的朋友,赶紧来磨一下 ...
- ES6参数默认值,剩余参数及展开数组
一.函数的参数默认值 在ES6之前,想要给参数设置默认值得话,只能在函数体内部加判断设置,比如如果传递参数为undefined时为true, 否则为false,如下图example1,ES6出现语法可 ...
- Python星号*与**用法分析 What does ** (double star/asterisk) and * (star/asterisk) do for parameters? 必选参数 默认参数 可变参数 关键字参数
python中*号**的区别 - CSDN博客 https://blog.csdn.net/qq_26815677/article/details/78091452 定义可变参数和定义 list 或 ...
- Python python 函数参数:必选参数,默认参数
import math # 函数的必选参数 '''函数的必选参数,指的是函数调用的时候必须传入的参数 ''' def cal (n): return n * n var = cal(2) '''上面的 ...
- python的位置参数、默认参数、关键字参数、可变参数区别
一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_d ...
- python-在定义函数时,不定长参数中,默认值参数不能放在必选参数前面
如果一个函数的参数中含有默认参数,则这个默认参数后的所有参数都必须是默认参数,否则会报错:SyntaxError: non-default argument follows default argum ...
- python函数传入参数(默认参数、可变长度参数、关键字参数)
1.python中默认缺省参数----定义默认参数要牢记一点:默认参数必须指向不变对象! 1 def foo(a,b=1): 2 print a,b 3 4 foo(2) #2 1 5 foo(3,1 ...
- Python学习笔记之默认参数
函数定义时 参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. def test(a,b,c=1,*d,**e) pass
随机推荐
- 08 Python基础数据结构
目录: 1) 列表 2) 元组 3) 字符串 4) bytes 5) bytearray 6) 字典 7) 集合 8) 冻集合 """1. 列表特性2. 创建3. 增加4 ...
- PAT 1133 Splitting A Linked List
Given a singly linked list, you are supposed to rearrange its elements so that all the negative valu ...
- Leetcode 95.不同的二叉搜索树II
不同的二叉搜索树2 给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树. 示例: 输入: 3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null ...
- h5dnd sortable mutil groups
h5dnd sortable mutil groups https://codepen.io/webgeeker/pen/JmPXaN https://codepen.io/webgeeker/pen ...
- [K/3Cloud] KSQL日期常量用法注意
KSQL中用日期常量必须用{ts'" + dateTime.ToString("yyyy-M-d HH:mm:ss") + "'} 正确写法: INSERT I ...
- $scope的生命周期
model mutation 模型改变 model observation 模型观察 scope destruction scope结束 神奇的scope,一个angular应用只有一个scope,一 ...
- 传智播客JDBC视频教程
视频介绍: 一些视频教程通过浅显案例来让刚開始学习的人感到轻松,可是课程中编写的代码不能直接应用于项目中:而本套视频教程正好相反,视频解说者李勇老师以技术见长.性格朴实无华.不善于幽默搞笑.李勇老师编 ...
- android 请求网络异步载入
/** * 封装ProecssDialog对话框 * */ public class LoadDialog extends ProgressDialog { private String title ...
- hdu 1024 Max Sum Plus Plus (子段和最大问题)
Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 读写Word的组件DocX介绍与入门
本文为转载内容: 文章原地址:http://www.cnblogs.com/asxinyu/archive/2013/02/22/2921861.html 开源Word读写组件DocX介绍与入门 阅读 ...