学习python内一般函数知识
函数
目录
一、函数定义
二、函数编写说明文档
三、函数的返回值
四、函数参数
1、位置参数与关键字参数
2、默认参数
3、可变长参数
4、可变关键字参数
五、作用域
1、全局变量
2、局部变量
3、global关键字
4、内嵌函数与 nonlocal关键字
5、闭包
6、递归
7、lambda匿名函数
一、函数定义
In [17]:
def info_1(a,b,c):print(a)print(b)print(c)
In [20]:
info_1(1,2,3) # 赋值调用,这样就可以重复调用1
2
3
二、函数编写说明文档
def test(a,b): # test的函数解释就是‘用来实现两个数的求和’'''用来实现两个数的求和'''print(a+b)
三、函数的返回值
def abs_1(x): # return返回一个值,下面的程序就不会执行if x >=0:return(x)else:return(-x)
In [32]:
abs_1(-444)
Out[32]:
444
四、函数参数
1、位置参数与关键字参数
# 位置参数
In [53]:
def test(a,b,c):print(a)print(b)print(c)In [54]:
test(1,2,3) # 1,2,3分别对应a,b,c1
2
3
# 关键字参数
In [57]:
test(a=2,b=1,c=3)2
1
3
关键字参数必须放在位置参数后⾯
使⽤名称指定的参数,有助于澄清各个参数的作⽤。这样,函数调⽤不再像下⾯这样怪异⽽神秘。
使⽤关键字参数使每个参数的作⽤清晰明了。另外,参数的顺序错了也没关系。
另外,关键字参数最⼤的优点还在于可以指定默认值。
2、默认参数
def test(a,b,c=1):print(a)print(b)print(c)In [64]:
test(b=1,a=2) # c=1是默认参数2
1
1
必选参数在前,默认参数在后,否则会报错。
默认参数降低了函数调⽤的难度,⽽⼀旦需要更复杂的调⽤时,⼜可以传递更多的参数来实现。⽆
论是简单调⽤还是复杂调⽤,函数只需要定义⼀个。
3、可变长参数
in[76]:
def sum_2(*x_list): # 在参数前面加个*n=0for i in x_list:n+=ireturn nIn [77]:
sum_2(3,4,5,1,2,3,4,5,1,2,3)Out[77]:
33
4、可变关键字参数
⼀个星号不会收集关键字参数,要收集关键字参数,可使⽤两个星号。
⼀个星号就是打包成元组传⼊进来,两个星号就是打包成字典传⼊进来。
In[79]:
def test(**x): # 在参数前加两个*return xIn [80]:
test(a=1,b=2,c=3,d=4) Out[80]:
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
五、作用域
1、全局变量和局部变量
# 全局作用域
a=1# 局部作用域 n= 0即为局部变量
def test_1(*args):n=0for i in args:n+=i*ireturn n
在函数外边定义的变量叫做全局变量
全局变量能够在所有的函数中进⾏访问
如果在函数中修改全局变量,那么就需要使⽤global进⾏声明,否则出错
如果全局变量的名字和局部变量的名字相同,那么使⽤的是局部变量的,⼩技巧:强⻰不压地头蛇
2、global关键字
# global关键字,全局变量不可变时使用
a=100
def test5():global a # 调用全局变量a+=1print(a)
test5()
3、内嵌函数与 nonlocal关键字
def outer():num = 10def inner():nonlocal num # nonlocal关键字声明num = 100print(num)inner()print(num)
outer()100
100
4、闭包
In [111]:
def funcX(x):def funcY(y):return x *yreturn funcYIn [112]:
funcX(1)(2)Out[112]:
2
5、递归
在程序上,递归实质上是函数调⽤⾃身的⾏为。
# 递归
def caljie(n):if n>1:result = n* caljie(n-1)else:result=1return resultIn [131]:
caljie(3)
Out[131]:
6
6、lambda匿名函数
①基本语法
⽤lambda关键词能创建⼩型匿名函数,这种函数得名于省略了⽤def声明函数的标准步骤。
lambda函数的语法只包含⼀个语句。
In [148]:
f = lambda x:x*2 if x>5 else x/2 # else不能省略 可用else none
f(3)Out[148]:
1.5
②使用场景
函数作为参数进⾏传递
Lambda函数能接收任何数量的参数,但只能返回⼀个表达式的值
匿名函数不能直接调⽤print,因为lambda需要⼀个表达式
把函数功能屏蔽
import timetime.sleep(10) # 让程序休眠10秒
print('------zZZ-------')
③作为高级函数的参数
a、map
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]In [152]:
list(map(lambda x:x*2+10, a))Out[152]:
[12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
b、filter
In[153]:
def f(x):if x % 2==0: # 函数⽤于过滤序列return xlist(filter(f,a))Out[153]:
[2, 4, 6, 8, 10]
c、sorted
In[159]:
sorted(a, key=lambda x: abs(5 - x)) #对所有可迭代的对象进⾏排序操作。Out[159]:
[5, 6, 4, 4, 3, 3, 2, 8, 2, 1, 1, 10, 22, 55, 77]
学习python内一般函数知识相关推荐
- python学习总结----内置函数及数据持久化
python学习总结----内置函数及数据持久化 抽象基类(了解)- 说明:- 抽象基类就是为了统一接口而存在的- 它不能进行实例化- 继承自抽象类的子类必须实现抽象基类的抽象方法 - 示例:from ...
- Python学习(14)--内置函数
Python学习(14)--内置函数 1.Python内置函数 在Python中有很多的内置函数供我们调用,熟练的使用这些内置函数可以让编写代码时事半功倍,所谓内置函数就是那些Python已经预定义并 ...
- python 内置函数转list_python学习笔记11-python内置函数
python学习笔记11-python内置函数 一.查看python的函数介绍: 二.python内置函数 1.abs获取绝对值: 通过python官网查看absabs(x) Return the a ...
- python内置函数表_python学习系列--python内置函数(一)
先列出所有的python内置函数,可以看到还是挺多的. abs() 求给定数的绝对值. all() 传入一个列表,只有当列表中所有元素都是真时,该函数返回真. any( ...
- python内置函数用来返回列表、元组、字典_python程序设计第一章基础知识 题库及选解...
由于学校的python是笔试,所以找了份感觉比较好的题库刷了下其中前八章的填空和判断,附上选解.各章链接如下 填空 1. Python安装扩展库常用的是()工具.(pip) 2. Python标准库m ...
- 8个超好用的Python内置函数,提升效率必备!
python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好了可以大大提高代码效率. 这次来梳理下8个好用的python内置函数. 1.set() 当需要对一个列表进行去重操作的 ...
- Python内置函数any()、map()组合运用案例一则
Python内置函数any()用来测试某个可迭代对象中是否所有对象都等价于True,map()用来把一个函数映射到一个或多个可迭代对象上. 问题描述:测试一个字符串中是否包含指定列表中的某个字符串作为 ...
- Python内置函数int()高级用法
int()函数常用来把其他类型转换为整数,例如: >>> int(3.2) 3 >>> int(1/3) 0 其实,int是Python内置类型之一,之所以能够当作 ...
- python内置函数可以返回列表元组_Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数....
Python内置函数()可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. 青岛远洋运输有限公司冷聚吉船长被评为全国十佳海员.()A:错B:对 有源逆变是将直流电逆变成其它频率的交流 ...
- python基础知识资料-学习Python列表的基础知识汇总
千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要 ...
最新文章
- 敏捷产品Backlog需求管理
- 原来matplotlib 散点图可以这样
- 中断锁与信号量的一种使用场景
- auto-sklearn手册
- AB1601 IO口反应延时的问题
- python在统计专业的应用_Python:使用Counter进行计数统计
- 【集合】JDK 7 HashMap集合的ConcurrentModificationException 原因
- mosquitto查看订阅记录_Mosquitto\Client
- 解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题
- Dev-cpp5.11下载
- 手机芯片命名规则详解
- 从asp空间下载apk文件
- nginx: [emerg] CreateFile() “D:\项目资料\nginx-1.12.2/conf/nginx.conf“ failed (1113: No mapping for t
- 知识库构建前沿:自动和半自动知识提取
- 解读 TiDB Server
- python 解决 mismatch问题
- Adobe软件试用下载
- APP流量变现,SDK聚合技术流量变现
- [LOJ#6617][THUPC2019]摆家具(矩阵乘法 + 子集和变换)
- [linux学习]centos下mysql的简单使用教程
热门文章
- 【安全牛学习笔记】初识sql注入漏洞原理
- Chrome升级 76.0.3809.87后 GreenChrome无法使用的办法
- [Swift]在Swift中实现自增(++)、自减(--)运算符:利用extension扩展Int类
- 【bzoj4897】[Thu Summer Camp2016]成绩单 区间dp
- 80.共享内存实现进程通信
- 自己写的一个Js小插件
- 源码编译安装screen
- 各个浏览器兼容性问题积累
- git clone权限被拒绝
- micro hdmi引脚定义义_系,意、义、意义,有理数的几何解释,合理存在的数(有理数)...