Python3入门(四)——Python函数
一、概述
python和其他高级语言一样,支持函数
注意和scala不一样,结果必须使用return,否则默认return None!这和scala最后一个值作为返回是不一样的!
二、函数调用
和其他语言一样,写出函数名,传入合适的参数即可,例如调用内置函数abs:
>>> abs(-1)
1
函数支持别名:
>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1
如果传入了错误的参数,Python会报TypeError错误
数据类型在Python中的转换可以通过相关的函数:
>>> int('')
1
>>> str(1)
''
三、函数定义
定义也是使用和scala一致的def关键字:
def fun1(x):
if x > 0:
print('正数')
return x
else:
print('负数')
return -x
如果什么都不做,那就用pass(如果返回空,使用return None)
def nop():
pass
由python这个函数定义也能知道,Python只能给我们做参数个数的检查,参数类型无法检查。要检查参数,只能通过手动编码使用instance实现:
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
并且,在Python这类有tuple的语言中,是可以返回多个值的!
def fun1(x,y):
if x > 0:
return x,y
else:
return x,y
a,b = fun1(1,2)
当然,内在的是返回了一个tuple,只是返回值可以省略这个()来显示表明这是一个tuple
默认参数:
定义带有默认参数的函数时,注意默认参数必须放在后面且必须是不可变对象!
def fun1(x,y=1):
if x > 0:
return x+y
else:
return x-y
可变参数
在参数前面加一个星号*即可,内部使用的是一个tuple包装的
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
如果要使用list或者tuple作为可变参数,类似calc(list[0],list[1]),可以使用*进行参数转换:
calc(*list)
关键字参数
在参数前面加两个星号**即可,内部会把这个关键字参数转换为dict(也就是map)
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
//内部接收的dict是外部的副本,不会对传入的作改变
命名关键字参数(Python3独有)
在参数中使用*作为一个分隔符即可,这样可以对传入的关键字参数作命名检查,只能传入指定名字的关键字参数
def person(name, age, *, city, job):
print(name, age, city, job)
这样,就可以对入参作命名检查了,只能传入city=xx,job=xx:
person('Jack', 24, city='Beijing', job='Engineer')
多种参数组合时,顺序必须严格控制:
必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
四、递归函数
和其他语言的递归函数是类似的:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
Python3入门(四)——Python函数的更多相关文章
- python3 入门 (四) 类与继承
Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法. 对象可以包含任意数量和类型的数据. p ...
- Python学习笔记(四)Python函数的参数
Python的函数除了正常使用的必选参数外,还可以使用默认参数.可变参数和关键字参数. 默认参数 基本使用 默认参数就是可以给特定的参数设置一个默认值,调用函数时,有默认值得参数可以不进行赋值,如: ...
- Python3入门系列之-----函数
什么是函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己 ...
- Python入门之 Python内置函数
Python入门之 Python内置函数 函数就是以功能为导向,一个函数封装一个功能,那么Python将一些常用的功能(比如len)给我们封装成了一个一个的函数,供我们使用,他们不仅效率高(底层都是用 ...
- Python3入门(三)——Python基础语法
一.基本语法 1.行和缩进 Python中,不使用括号来表示代码的类和函数定义块或流程控制. 代码块是由行缩进,缩进位的数目是可变的,但是在块中的所有语句必须缩进相同的量. 如下所示: a = 100 ...
- python3入门之函数
相信大家学习过其他语言,懂得函数的作用.简单的说函数最好的作用就是可以使程序变得懒惰.python作为后起之秀,当然也会拥有函数这个有用的东西: 创建函数 使用def语句即可创建函数,如创建一个用来生 ...
- python学习【第四篇】python函数 (一)
一.函数的介绍 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以 ...
- Python入门篇-生成器函数
Python入门篇-生成器函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.生成器概述 1>.生成器generator 生成器指的是生成器对象,可以由生成器表达式得到, ...
- Python入门笔记(18):Python函数(1):基础部分
一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
随机推荐
- ListView 添加 HeaderView常见错误
1.addHeaderView异常: 最近在做通讯录开发时使用ListView,发现一个奇怪的问题:当添加一个ImageView 作为HeaderView时,发现ImageView长宽始终是1:1的大 ...
- servlet和jsp页面过滤器Filter的作用及配置
刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下, 过滤器是一个对象,可以传输请求或修改响应.它可以在请求到达Servlet/JSP之前对其进行预处理, ...
- DevOps之基础设施-电力
唠叨话 关于噢屁事的知识点,仅提供精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <基础设施-电力> 关于基础设施的电力部分,知识与技能的层次(知道.理解.运用),理论与实践的 ...
- 将 HPC 作业从本地计算机提交到部署在 Azure 中的 HPC Pack 群集
Note Azure 具有用于创建和处理资源的两个不同的部署模型:Resource Manager 和经典. 这篇文章介绍了如何使用这两种模型,但 Azure 建议大多数最新部署使用 Resource ...
- 8086CPU的出栈(pop)和入栈(push) 都是以字为单位进行的
8086CPU的出栈(pop)和入栈(push) 都是以字为单位进行的
- MySQL主从延迟如何解决?
我们知道生产环境中经常会遇到MySQL主从延迟问题,从原理上也能看出主库的事务提交是并发模式,而从库只有一个SQL线程负责解析,所以本身上就可能存在延迟. 延迟的主要原因在于: 1.从库的配置往往没有 ...
- time模块案例演示
案例01: 2008年8月8日20:08:08 往后88,888,888秒是哪天?星期几? 日期->时间戳(浮点数)->可以做数学运算 演示: import time # 构造日期的元组, ...
- [BZOJ 1135][POI2009]Lyz
[BZOJ 1135][POI2009]Lyz 题意 初始时滑冰俱乐部有 \(1\) 到 \(n\) 号的溜冰鞋各 \(k\) 双.已知 \(x\) 号脚的人可以穿 \(x\) 到 \(x+d\) 的 ...
- java使用elasticsearch进行模糊查询-已在项目中实际应用
java使用elasticsearch进行模糊查询 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路 ...
- 打开word文档时提示“Microsoft Office Word已停止工作”
我的电脑(Win10)有Office 2003和2013两个版本,可能由于之前超长待机等原因导致word 2003的文件(.doc)不能正常打开,没次都会提示“Microsoft Office Wor ...