Python参数相关知识
-
Python 参数类型以及常见的坑导语由于之前遇到过几次有关于参数类型的坑,以及经常容易把一些参数类型搞混淆,现在做一下有关参数类型的总结记录以及对之前踩坑经历的分析。参数类型首先我们列举一下有关于Python的参数类型,以及实际上的运用和原理:位置参数(必选参数)默认参数可变参数关键字参数位置参数(必选参数)首先是位置参数,同时也被称作必选参数,位置参数很好理解,只要记住这点:在函数定义时直接给定的此参数名称,调用时按照参数的位置顺序,依次赋予参数值示例:def person_info(name, age): print("My name is %s, I am %s years old" % (name, age)) person_info("zhangsan", "49") (name,age都是位置参数,按照位置顺序,函数中依次接收参数值。)默认参数默认参数,默认参数存在许多便利的地方,但是同时也存在许多坑,等到后面我们再去仔细分析下为什么存在这些坑,以下几点我们需要注意的:可以为一个或者多个参数指定默认值,当调用
-
Python 参数解析库 docopt 简单使用图文教程Part 1 说明:0 嫌啰嗦的直接到 正式开始 的位置。1 docopt 是一个参数解析的库。所以这个算是一个小教程。如果没有python基础,还是建 议先去学一下。2 另外百度一下发现了 optparse 这个python 系统自带的库。简单的看了看。知乎上大神说 珍爱生命 远离 optparse。下了我一跳。这里不代表我的观点。毕竟自带的,可以去看看比较一下。。。不过这不是本文的重点了。3 百度了半天的docopt 教程只找到了这个 看了还是没怎么懂。算了,还是自己搞一搞吧。part 2 背景:前几天,看了一个教程。制作一个火车票查看器这个小功能作者写得挺有思路确实写得不错,如果感兴趣可以去看看这个文章。制作完这个小的工具以后就能用命令去查询相应的火车票情况。 so cool。火车票查询输出结果.pngpython学艺不精+_+,想探究一下命令是怎么一步步控制执行代码的。打开作者的文件里面发现了只是这个样子。火车票的py实现.png甚至都没有看到怎么去写
-
Python参数传递,既不是传值也不是传引用面试的时候,有没有被问到Python传参是传引用还是传值这种问题?有没有听到过Python传参既不是传值也不是传引用这种说法?一个小小的参数默认值也可能让代码出现难以查找的bug? 如果你也遇到过上面的问题,不妨我们来探究下Python函数传递的种种。 万物皆对象 Python中有一个非常重要的概念——万物皆对象,无论是一个数字、字符串,还是数组、字典,在Python中都会以一个对象的形式存在。 a = 123 对于上面这行代码,在Python看来就是创建一个PyObject对象,值为123,然后定义一个指针a
-
python函数传递参数python 函数传递参数的多种方法python中函数根据是否有返回值可以分为四种:无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值。Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递,不定参数传递(包裹传递)和解包裹传递。1.位置传递实例:def fun(a,b,c) return a+b+cprint(f(1,2,3))2.关键字传递关键字(keyword)传递是根据每个参数的名字传递参数。关键字并不用遵守位置的对应关系。def fun(a,b,c) return a+b+cprint(f(1,c=3,b=2))3.参数默认值在定义函数的时候,使用形如c=10的方式,可以给参数赋予默认值(default)。如果该参数最终没有被传递值,将使用该默认值。def f(a,b,c=10): return a+b+cprint(f(3,2))print(f(3,2,1))在第一次调用函数f时, 我们并没有足够的值,c没有被赋值,c将使用默认值10
Python参数相关课程
Python参数相关教程
- Python 中的函数参数 在通常情况下,定义函数时,函数的参数个数是预先确定的。例如,编写计算两个数相加的函数 add(a, b),代码如下:def add(a, b): return a + bsum = add(1, 2) 在第 1 行,定义了函数 add,函数有两个参数,第 1 个参数是 a,第 2 个参数是 b在第 2 行,计算参数 a 和 参数 b 的累加和,通过 return 语句将计算结果返回给调用者在第 4 行,通过 add(1, 2) 调用函数 add将整数 1 传递给第 1 个参数 a将整数 2 传递给第 2 个参数 b传入的两个整数按照位置顺序依次赋给函数的参数 a 和 b,参数 a 和参数 b 被称为位置参数。在 Python 中,调用函数时,根据函数定义的参数位置来传递参数,要求传递的参数与函数定义的参数两者一一对应,如果 “传递的参数个数” 不等于 “函数定义的参数个数”,运行时会报错,例如:def add(a, b): return a + bsum = add(1, 2, 3)在第 1 行,定义了函数 add,函数有 2 个参数在第 4 行,通过 add(1, 2, 3) 调用函数 add,传递了 3 个参数因为 “传递的参数个数” 不等于 “函数定义的参数个数”,运行时报错如下:C:\> python add.pyTraceback (most recent call last): File "error.py", line 4, in <module> sum = add(1, 2, 3)TypeError: add() takes 2 positional arguments but 3 were given在第 5 行,运行时提示:函数 add 有 2 个位置参数,但是调用时传递了 3 个位置参数。
- 2.2 Python 程序的命令行参数 Python 将命令行参数保存在 sys 模块中的 argv 变量中:sys.argv 是一个数组数组中存储的是字符串在命令行模式下,使用 python 解释器执行程序 program.py:C:\> python program.py argument则命令行参数 sys.argv 等于 [‘program.py’, ‘argument’],注意:输入的命令行由 3 个单词构成,但是命令行参数不包括 ‘python’命令行参数包括 python 程序文件名,即 ‘program.py’
- 3.3 以 Python 源文件名作为参数调用 python 命令 创建完 test.py 后,进入 C 盘根目录,使用 dir 命令查看 C 盘根目录,确认在 C 盘目录下存在文件 test.py,如下图所示:使用 dir 命令查看 C 盘根目录 然后,以 Python 源文件名 test.py 作为参数调用 python 命令,如下图所示:以 Python 源文件名作为参数调用 python 命令 命令 python test.py 执行 Python 程序 test.py,输出结果为:helloworld
- 2.1 位置参数 位置参数顾名思义,就是传递给脚本参数的位置,例如给一个脚本传递一个参数,我们可以在 Shell 脚本内部获取传入的位置参数,获取参数的格式为:$n。n 代表一个数字。例如传递给脚本的第一个参数就为 $1,第 2 个参数就为 $2, 以此类推……,其中 $0 为该脚本的名称。在我们讲解变量的时候,变量的一条规范就是名字不能以数字开头,在此就是为了避免与 Shell 的位置参数相同引发异常。例如:[root@master Shell_args]# cat args1.sh #!/bin/bashecho "第一个参数为: $1"echo "第二个参数为: $2"echo "脚本名称为: $0"[root@master Shell_args]# bash args1.sh python go第一个参数为: python第二个参数为: go脚本名称为: args1.sh我们可以看到传递给 args1.sh 脚本两个位置参数,第一个为 python, 第二个为 go, 脚本名称为 args1.sh
- 2.2 特殊参数 在 Shell 中也存在特殊含义的参数如下表:变量含义$#传递给脚本或函数的参数个数总和$*传递给脚本或函数的所有参数,当被双引号 " " 包含时,所有的位置参数被看做一个字符串$@传递给脚本或函数的所有参数,当被双引号 " " 包含时,每个位置参数被看做独立的字符串$?上个命令的退出状态,或函数的返回值,0 为执行成功,非 0 则为执行失败$$当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。示例:[root@master Shell_args]# cat args2.sh #!/bin/bashecho "第一个参数为: $1"echo "第二个参数为: $2"echo "脚本名称为: $0"echo "脚本接受参数总数为: $#"curl -I baidu.comecho "运行命令的状态为:$?"echo "脚本的ID为:$$"echo "\$*的结果为:$*"echo "\$@的结果为:$@"for i in "$*";do echo $idonefor j in "$@";do echo $jdone# 运行脚本来进行测试[root@master Shell_args]# bash args2.sh go python Shell第一个参数为: go第二个参数为: python脚本名称为: args2.sh脚本接收参数总数为: 3HTTP/1.1 200 OKDate: Sun, 08 Mar 2020 07:32:22 GMTServer: ApacheLast-Modified: Tue, 12 Jan 2010 13:48:00 GMTETag: "51-47cf7e6ee8400"Accept-Ranges: bytesContent-Length: 81Cache-Control: max-age=86400Expires: Mon, 09 Mar 2020 07:32:22 GMTConnection: Keep-AliveContent-Type: text/html运行命令的状态为:0脚本的ID为:23333$*的结果为:go python Shell$@的结果为:go python Shellgo python ShellgopythonShell我们能够通过上述例子看出,运行 curl -I baidu.com 的输出为 0,即为命令运行正常,获取到了正常的返回值;$@与 $* 看上去很像,都是传递给脚本或函数的所有参数;$* 当被双引号 " " 包含时,所有的位置参数被看做一个字符串,我们用 for 循环遍历的时候可以看到输出为一行;$@当被双引号 " " 包含时,每个位置参数被看做独立的字符串,我们用 for 循环遍历的时候可以看到为每个字符串输出为单独的一行。
- 2.3 函数参数 上述我们了解了函数的定义,在其中无参函数调用即调用函数名即可,对于有参函数,需要传递一定的参数来执行对应的操作,函数的参数和脚本的参数类型及用法一致,在此我们简单回顾下,看参数在函数中都有哪些分类,及该如何使用。2.3.1 位置参数位置参数顾名思义,就是传递给函数参数的位置,例如给一个函数传递一个参数,我们可以在执行 Shell 脚本获取对应位置的参数,获取参数的格式为:$n。n 代表一个数字,在此需要注意与脚本传递参数不一样,$0 为依旧为脚本的名称,在函数参数传递中,例如传递给函数的第一个参数获取就为 $1,第 2 个参数就为 $2, 以此类推……,需要其 $0 为该函数的名称。例如:[root@master func]# cat f1.sh #!/bin/bashfunction f1() { echo "函数的第一个参数为: ${1}" echo "函数的第二个参数为: ${2}" echo "函数的第三个参数为: ${3}"}# 调用函数f1 shell linux python go[root@master func]# bash f1.sh 函数的第一个参数为: shell函数的第二个参数为: linux函数的第三个参数为: python我们可以看到传递给 f1 函数共 4 个位置参数,在结果输出中可以看到由于函数体内部只对三个参数进行了处理,后续的参数也就不再处理了。2.3.2 特殊参数在 Shell 中也存在特殊含义的参数如下表:变量含义$#传递给函数的参数个数总和$*传递给脚本或函数的所有参数,当被双引号 " " 包含时,所有的位置参数被看做一个字符串$@传递给脚本或函数的所有参数,当被双引号 " " 包含时,每个位置参数被看做独立的字符串$?$? 表示函数的退出状态,返回为 0 为执行成功,非 0 则为执行失败示例:[root@master func]# cat f1.sh #!/bin/bashfunction fsum() { echo "函数第一个参数为: ${1}" echo "函数第二个参数为: ${2}" echo "函数第三个参数为: ${3}" echo "函数的参数总数为: ${#}" echo "函数的参数总数为: ${@}" local sum=0 for num in ${@}; do let sum=${sum}+${num} done echo "计算的总和为: ${sum}" return 0}# 调用函数fsum 10 20 1 2echo $?[root@master func]# bash f1.sh 函数第一个参数为: 10函数第二个参数为: 20函数第三个参数为: 1函数的参数总数为: 4函数的参数总数为: 10 20 1 2计算的总和为: 330如上可以看到特殊参数与 Shell 脚本传递参数一样。Tips:局部变量需要特别声明在函数内部利用 local 关键字来声明。
Python参数相关搜索
-
pack
package
package文件
padding
pages
page对象
panda
panel
panel控件
param
parameter
parcel
parent
parentnode
parents
parse
parse error
parseint
partition
pascal