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. Codeforces Round #395 C. Timofey and a tree

    package codeforces; import java.util.*; public class CodeForces_764C_Timofey_and_a_tree { static fin ...

  2. 【Codeforces 598D】Igor In the Museum

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 同一个联通块里面答案都一样. 把每个联通块的答案都算出来 然后赋值就好 [代码] #include <bits/stdc++.h> ...

  3. Leetcode 68.文本左右对齐

    文本左右对齐 给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本. 你应该使用"贪心算法"来放置给定的单 ...

  4. macos-mojave

    macos-mojave https://itunes.apple.com/cn/app/macos-mojave/id1398502828?mt=12

  5. docker: 定时检查docker container的运行状态并发邮件报警

    首先创建一个发送邮件的bash脚本 - send_mail.sh: #!/bin/bash curl -s --user 'api:key-xxxxxxxxxxxxx' \ https://api.m ...

  6. 基于Linux下的UDP编程

    一. Linux下UDP编程框架 使用UDP进行程序设计可以分为客户端和服务器端两部分. 1.服务器端程序包括: Ø  建立套接字 Ø  将套接字地址结构进行绑定 Ø  读写数据 Ø  关闭套接字 2 ...

  7. PKU 3667 Hotel (线段树,区间合并,最长连续区间)

    题意:宾馆有N个房间(1~N),M个操作,a=1,输入b,表示N间房是否有连续的b间房.有输出最左边的房编号 没有输出0.a=2,输入b,c表示房间b到c清空. 模仿了大神的代码,敲了一遍,有些地方还 ...

  8. iOS网络高级编程:iPhone和iPad的企业应用开发之错误处理

    本章内容 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWluZ2h1YXdlbmthbmc=/font/5a6L5L2T/fontsize/400/fi ...

  9. PhoneGap3+版本号的安装、配置和使用[图]

    如若转载.请注明博文地址及原作者(RisingWonderland). PhoneGap2+版本号最高为2.9.1,从3+版本号開始,PhoneGap官方不再提供下载安装包,须要在联网状态下.通过No ...

  10. 斯坦福《机器学习》Lesson8感想-------1、SMO

    从上一篇文章可知支持向量(supervector)就是指的离分隔超平面近期的那些点.整个SVM最须要的步骤是训练分类器.得到alpha,从而得到整个用于数据分类的分隔超平面.支持向量机(super v ...