python系统提供构造函数传入参数_[ Python入门教程 ] Python函数定义和使用
函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果。通过使用函数,可以提高代码的重复利用率。本文主要介绍Python函数的定义、调用和函数参数设置方法。
函数的定义
Python函数定义非常简单,使用关键字def定义。函数必须先定义后使用。Python函数定义的格式如下所示:
def函数名(参数1,参数2,...):
语句块return [表达式]
函数名可以是字母、数字或下划线组成的字符串,但是不能以数字开头。函数的参数放在一对圆括号中。参数的个数可以有一个或多个,参数之间用逗号隔开。括号后面以冒号结束,冒号下面就是函数的主体。函数的返回使用return语句,return [表达式]结束函数。如果return后面不带表达式,表示返回None。实例如下:
defpower(x, n):
s= 1
while n >0:
n= n - 1s= s *xreturn s
函数调用
函数调用采用函数名加一对圆括号的方式,圆括号内的参数是传递给函数的具体指。函数调用格式如下:
函数名(实参1,实参2...)
实际参数必须与形式参数一一对应,否则将报错。具有默认值的参数例外。上述power()函数的调用方法如下:
power(3,2)
函数的参数
函数定义的时参数名和位置就已经确定。使用函数时只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
(1)位置参数
位置参数指的是调用函数时根据函数定义的参数位置来传递参数。上述power()函数的x,n参数就表示参数。调用时可以直接通过传参嗲用。函数调用时传入参数个数必须与位置参数个数一致,否则会报错。实例如下:
#-*- coding:utf-8 -*-
defpower(x, n):
s= 1
while n >0:
n= n - 1s= s *xreturnsprint "power(3, 2) =", power(3, 2) #传入参数个数与定义的位置参数一致。
print "power(3) =", power(3) #传入参数个数与定义的位置参数不一致。报错"TypeError: power() takes exactly 2 arguments (1 given)"
(2)默认参数
函数的参数支持默认值。当某个参数没有传递实际的值时,函数将使用默认参数计算。特别注意的是,在函数定义和调用时,所有位置参数必须出现在默认参数前。修改power函数代码如下:
def power(x, n=2):
s= 1
while n >0:
n= n - 1s= s *xreturnsprint "power(3) =", power(3) #不带参数n调用函数,n赋默认值为2
print "power(3, 2) =", power(3, 2) #参数n指定值为2调用函数
print "power(3, 3) =", power(3, 3) #参数n指定值为3调用函数
代码运行结果如下:
power(3) = 9power(3, 2) = 9power(3, 3) = 27
(3)可变参数
可变参数就是值允许调用函数时传入参数个数是可变的,可以是1个,2个或者多个,这些可变参数在函数调用时自动组装为一个tuple。因此在函数内部获取可变参数时,参数接收到的是一个元组。可变参数在函数定义时的格式如下:
def 函数名(*args):
....return 变量或表达式
可变参数在函数定义时对形参前加一个星号*,如*args。实例如下:
def fun1(x,y,*args):print "x =", xprint "y =", yprint "type(*args) =", type(args) #可变参数args在函数内部获取到的类型print "args =", args #可变参数args获取的传入的值
sum=0for i inargs:
sum+=iprint "sum =", sum
fun1('A', 'B', 1, 2, 3, 4)
代码运行输出结果如下:
x =A
y=B
type(*args) = args= (1, 2, 3, 4)
sum= 10
通过上述实例,我们知道。可变参数args可以传入任意数量参数。函数内部获取可变参数的类型为tuple。
(4)关键参数
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。这是不同于可变参数的地方。函数定义时使用关键参数的格式如下:
def 函数名(**kw):
....return 变量或表达式
关键参数在函数定义时对形参前加两个星号**,如**kw。实例如下:
def fun1(x,y,**kw):print "x =", xprint "y =", yprint "type(**kw) =", type(kw)print "kw =", kwfor key, value inkw.items():printkey, value
fun1('A', 'B', num1=1, num2=2, num3=3, num4=4)
代码运行结果如下:
x =A
y=B
type(**kw) = kw= {'num4': 4, 'num1': 1, 'num2': 2, 'num3': 3}
num44num11num22num33
从上述结果可以知道,函数内部获取的关键参数的类型为字典(dict),使用时以字典形式操作即可。
函数的嵌套
函数的嵌套是指在函数的内部调用其他函数。C、C++只允许在函数体内部嵌套。而Python不仅支持函数体内嵌套,还支持函数定义的嵌套。通过2个实例分别查看,如下
(1)函数体内嵌套
defsum(a, b):return a +bdefsub(a, b):return a -bdeffun1():
x=1y=2m= 2n= 4
return sum(x, y) *sub(m, n)print fun1()
(2)函数定义的嵌套。不推荐使用,代码可读性、可维护都不好。
deffun1():
x=1y=2m= 2n= 4
defsum(a, b):return a +bdefsub(a, b):return a -breturn sum(x, y) *sub(m, n)print fun1()
匿名函数lambda
lambda函数用于创建一个匿名函数,函数名未和标识符进行绑定。使用lambda函数可以返回一些简单的运算结果。lambda函数的格式如下所示:
lambda 变量1,变量2,...: 表达式
其中,变量列表用于表达式的计算。lambda属于函数,因此变量列表后需要一个冒号。通常把lambda赋值给一个变量,变量就可以作为函数使用。另外,lambda中只能使用表达式,不能使用判断、循环等多重语句。常用实例如下:
>>> list1 = [3,5,-4,-1,0,-2,-6]>>> sorted(list1, key=lambda x: abs(x))
python系统提供构造函数传入参数_[ Python入门教程 ] Python函数定义和使用相关推荐
- python系统提供构造函数传入参数_python类变量与构造函数的使用
类变量:可在类的所有实例之间共享的变量 实例类对象:类的实例是调用类对象来创建的.如:par = Parent(),par就是类Parent的一个实例类对象. 实例变量(成员变量):同一个类对象可以创 ...
- go 协程回调函数 传入参数_ECMAScript 6 入门教程—Generator 函数的异步应用
作者 | 阮一峰异步编程对 JavaScript 语言太重要.JavaScript 语言的执行环境是"单线程"的,如果没有异步编程,根本没法用,非卡死不可.本章主要介绍 Gener ...
- python 函数调用 不允许关键字参数_你所不知道的Python|函数参数的演进之路
原标题:你所不知道的Python|函数参数的演进之路 函数参数处理机制是Python中一个非常重要的知识点,随着Python的演进,参数处理机制的灵活性和丰富性也在不断增加,使得我们不仅可以写出简化的 ...
- python从外部传入参数_从另一个Python脚本运行一个Python脚本,并传入参数 - python...
我想从另一个Python脚本运行一个Python脚本.我想像使用命令行一样传递变量. 例如,我将运行我的第一个脚本,该脚本将遍历值列表(0.1.2.3),并将其传递给第二个脚本,依次为script2. ...
- python调用exe程序 传入参数_关于使用c#调用python脚本文件,脚本文件需要传递参数...
最近工作中需要干这个事,网上搜了搜资料,改了改,基本是这样 建立一个控制台应用程序: 比如 加入我在命令行直接调用python脚本,命令为 y安装python后,添加环境变量,path下面,加入路径. ...
- python黑科技自动p图_大神级Python工程师是怎么P图的,带你用Python玩转P图
群内不定时分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴入群学习交流 1.PIL:Python影像库 PIL或者Python Imaging Library ...
- keil obj 文件 结构_【Python】数据分析前的入门教程 Python For Everybody P2:数据结构...
这是密歇根大学课程Python For Everybody总结的P2部分.课程总结P1部分的地址如下: P1: 零基础程序设计(Python 入门) carolinezhq:[Python]数据分析前 ...
- 视频教程-Python零基础入门教程-Python
Python零基础入门教程 从2012年从事互联网至今有7年软件编程经验,曾任职国内北京互联网公司,中南林业大学授课Python 现任逻辑教育Python课程负责人,精通Python语言,精通人工智能 ...
- [入门教程](python numpy入门)
[入门教程](python numpy入门) NumPy NumPy是一个开源的Python科学计算基础库,包含 •一个强大的N维数组对象ndarray •广播功能函数 •整合C/C++/Fortra ...
最新文章
- 如何用 OpenCV、Python 和深度学习实现面部识别?
- 为了给你们讲清楚数据库中间件有哪些,我也是拼了!
- [学习笔记]Segment Tree Beats!九老师线段树
- 操作系统 :银行家算法的实现(C++)
- python学习之路 一 :编程语言介绍
- Jquery 常用总结
- 博客杂志CMS模板,wpdx3.6破解版源码WordPress主题
- Scikit-learn 秘籍 翻译完成
- Kali Linux 无线渗透测试入门指南 第九章 无线渗透测试方法论
- mock()java,关于java:@ Mock,@ MockBean和Mockito.mock()之间的区别
- 单次目标检测器之YOLO I
- 最流行的 6 款 Python 解释器
- 关于数位板怎么用,电脑绘画入门篇
- cad图形不见了怎么办_CAD软件常见问题解答,CAD中的工具栏不见了怎么办?如何清理图形...
- mysql-proxy之奇虎360 Atlas 安装实现mysql读写分离
- 发那科syst178_发那科系统报警大全
- EXCEL 快捷键集合
- 58同城一面【前端】
- 国际高性能计算和人工智能咨询委员会公布第五届亚太区 HPC-AI竞赛结果
- ELK Stack在多项目情况下filebeat与logstash的多文件配置