函数里的众多参数(逐渐补全)

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用,除了可变参数无法和命名关键字参数混合。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。

比如定义一个函数,包含上述若干种参数:

def f1(a, b, c=0, *args, **kw):
    print(‘a =‘, a, ‘b =‘, b, ‘c =‘, c, ‘args =‘, args, ‘kw =‘, kw)
def f2(a, b, c=0, *, d, **kw):
    print(‘a =‘, a, ‘b =‘, b, ‘c =‘, c, ‘d =‘, d, ‘kw =‘, kw)

在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。

>>> f1(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}

>>> f1(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}

>>> f1(1, 2, 3, ‘a‘, ‘b‘)
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {}

>>> f1(1, 2, 3, ‘a‘, ‘b‘, x=99)
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {‘x‘: 99}

>>> f2(1, 2, d=99, ext=None)
a = 1 b = 2 c = 0 d = 99 kw = {‘ext‘: None}

最神奇的是通过一个tuple和dict,你也可以调用上述函数:

>>> args = (1, 2, 3, 4)
>>> kw = {‘d‘: 99, ‘x‘: ‘#‘}
>>> f1(*args, **kw)
a = 1 b = 2 c = 3 args = (4,) kw = {‘d‘: 99, ‘x‘: ‘#‘}

>>> args = (1, 2, 3)
>>> kw = {‘d‘: 88, ‘x‘: ‘#‘}
>>> f2(*args, **kw)
a = 1 b = 2 c = 3 d = 88 kw = {‘x‘: ‘#‘}

所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

时间: 2024-10-23 17:23:33

函数里的众多参数(逐渐补全)的相关文章

正则replace 回调函数里接收的参数是什么?

前言 我们都知道 replace 在做替换处理方面会很常用,通常也是第一个会想到的方法.replace 第一个参数可以传入 string 或 RegExp,第二个参数可以传入 string 或 一个回调函数.在能够传入回调函数之后,事情就开始变得不简单了(如果有用过map,filter等函数,你就知道传入回调函数的强大).在做替换处理时,我们能够获取到更多的有效信息,处理的手段也可以更加多样化,而不是单纯的替换.接下来我们,来看看回调函数里接受的参数到底是什么? 回调中接收到的参数 回调中最少可

Centos命令参数自动补全

最小化安装centos后发现git docker等命令不能自动补全参数,而在Desktop安装环境下是可以自动补全的. 要解决这个问题需要安装一个小软件:bash-completion sudo yum install bash-completion

awk函数实现将简化IPV6地址补全

在用awk处理文本时,有些场景需要将简化的IPV6地址补充成完整的IPV6地址,下边函数可简单实现: IPV6地址补全函数 # ipv6地址补全函数 function compipv6(orig_address){ # 分割IPV6地址 split(orig_address, ipv6_addr, "/") n = split(ipv6_addr[1], ip_field, ":") full_addr="" # 切割简化的地址 split(ip

函数里的普通参数、指定参数、默认参数、动态参数的区别

1.普通参数就是像下面这段函数传入的参数一样,传入函数,没有默认值 1 def f(a): 2 a = a + 1 3 return a 4 5 b=f(3) 6 print(b) 2.指定参数 1 #像这样按照顺序传入的话,如果没有指定参数的值那么就会按照顺序分别给a,b,c赋初始值 2 d=f(3,4,5) 3 print(d) 4 #如果像这样指定a,b,c的值,那么它们就是指定参数,可以不按照它们原来的顺序传入 5 e=f(c=5,b=4,a=3) 6 print(e) 3.默认参数 1

8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向

8.1 shell介绍 1. shell是一个命令解释器,提供用户和机器之前的交换 2. 每个用户都可以有自己特定的shell 3. CentOS7默认shell是bash(Bourne Agin Shell); shell还有zsh.ksh等 zsh.ksh这两种shell命令没有安装, 可以用yum list搜索下这两个命令的安装包: [[email protected] ~]# yum list |grep zsh [[email protected] ~]# yum list |grep

python代码补全工具Kite

Python 的代码补全工具 Kite,它可以帮助广大开发者在敲代码时,实时生成与上下文相关的代码片段. 这不仅大大提高了代码敲写效率,同时也让开发者能更轻松地完成更复杂.更多字符的代码语句.Python 之父 Guido van Rossum 用后,也非常喜爱这个功能,向大家强烈推荐了这一高效工具. 它的使用条件很简单,支持多种IDE和操作系统,并且免费使用. 下载地址:https://kite.com/download/ 支持Windows.Mac.Linux 支持Atom.PyCharm.

Centos 6.6命令行实现自动补全

公司同事用的ubuntu系统,自动补全功能不错,但是本人的Centos 6.6系统使用sudo的时候就不能自动补全了,git命令也不能自动补全. 网上搜索一番解决方法如下. 一  git不能补全问题 下载git源码 $ git clone https://www.kernel.org/pub/scm/git/ 找到git-completion.bash文件拷贝到 -/目录下 $ sudo cp contrib/completion/git-completion.bash -/.git-compl

2018-1-10 5周3次课 命令补全、别名、通配符、重定向

8.1 shell介绍 ·什么是shell? - shell是一个命令解释器,提供用户和机器之间的交互 - 支持特定语法,比如逻辑判断.循环 - 每个用户都可以有自己特定的shell - CentOS7默认shell为bash(Bourne Agin Shell) - 还有zsh.ksh等 8.2 命令历史 方向键↑可以查看历史命令,命令存放在家目录 ~/.bash_history history命令查看之前的命令, 最大可以存1000条 可以存多少条命令是由一个环境变量HISTSIZE决定的

linux命令补全参数提示程序bash-completion

bash-completion能提示命令.提示命令参数等,在CentOS7中,很多日常管理的命令格式较长如nmcli.ip.firewall-cmd.systemctl等,借助bash-completion可以快速.友好地学习新命令的使用. 最小化安装系统的时候默认不安装,由于软件在epel库中,安装时先安装epel-release.注意,安装完成后在新shell里生效,所以需要重连或创建新bash. yum install epel-release -y yum install bash-co