Python教程
python基础5-变量/递归函数/函数式编程/内置函数
本文主要是介绍python基础5-变量/递归函数/函数式编程/内置函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
全局变量与局部变量
顶头定义,或者叫没有缩进的定义变量,就叫全局变量
在子程序中要对全局变量做操作,则申明global 变量名
如果函数的内容无global关键字,优先读取局部变量,没有的话再读取全局变量,无法对全局变量重新赋值,但是对于可变类型,可以对内部元素进行操作,例如append,clear
全局变量全部大写,局部变量全部小写,代码规范
函数可以嵌套函数,在嵌套函数中,用nonlocal name可以申明位name为外层函数的同名变量,而不是全部变量
前向应用
风湿理论,函数即变量,在函数语句运行之前,函数已经被申明即可执行。这点跟变量一样
函数定义时不会执行,在内存中开辟地址,变量名为门牌号,函数内容被当作字符串存入门牌中
递归
编程方法论:函数式编程中没有循环,都是递归
递归特性:必须有一个明确的结束条件,否则是死循环,直接报错。在函数内满足条件时,执行return语句
列表可以用person_list.pop(0),弹出列表的第一个元素
加上断点分析,debug
作用域
函数名相当于函数的内存地址,加上()才是函数
return 函数名,即返回一个函数地址,函数地址()即可执行函数。return 可以接任意参数
想拿到函数执行的地址,就让a= f()
函数的作用域在申明时已经决定,跟调用位置无关
匿名函数
用lambda x:x+1,第一个x是形参,x+1是函数的返回值
func = lambda x:x+1,然后func(9)即可执行
lambda应该跟其他函数一块用,而不是func = lambda的形式,如map函数
其中x+1的位置,一般是简单逻辑,而不是for循环,if判断等
返回多个值时,需要自己加括号,lambda x,y,z: (x+1,y+1,z+1)
函数式编程
语言是用来跟计算机沟通的
编程方法论,面对过程,函数式编程,面向对象
面向过程,把大问题分成小问题,找到解决问题的入口,按照一个固定的流程去模拟解决问题的流程
函数式编程= 编程语句定义的函数+数学意义的函数。定义好数学模型y=2*x+1,用python函数实现上述数学模型。hasell clean erlang是严格意义上的函数式编程语言
面向过程,def cal(x):res = 2*x res+=1 return res
函数式编程的特性:不定义变量,不修改变量,直接往下操作。
函数即变量,函数名可作为参数传递,返回值可以是函数名,叫高阶函数,装饰器会用到
return test1(),即先执行tets1(),返回函数test1的执行结果
调用栈,多层嵌套函数的情况下,上层没执行完就要进入下一层时,要保留上一层运行情况,等下一层执行完,再回来执行上一层,称为调用栈
尾调用优化:在函数的最后1步调用另外一个函数,这样上一层函数就不用保留了,相当于直接转入下一个函数。最后1行不一定是最后1步,例如if else判断
map函数。map(lambda x:x+1,num_1),第一个位置传函数名,不带()。第二个位置传实参。map执行逻辑,遍历第二个实参,每个都交给第一个位置函数处理一遍。map返回结果是个迭代器,需要外套list可转换为列表
filter函数。filter(lambda n:not n.endwith('sb'),movie_people),第一个参数是函数,第二个参数是可迭代对象,把第二个可迭代对象可循环遍历,拿出每个元素交给前边函数筛选一遍,得到布尔值,为true则保留
reduce函数。from funtools import reduce,先导入。把一个序列进行合并操作。reduce(lambda x,y:x+y, num_1 ,1),1为初始值,把列表num_1中的值遍历,交给lambda函数累加一遍
python内置函数
all([1,2,'1',''])判断每个元素的布尔值,全部为真,则all返回true
any跟all相反,只要有一个为真,就为真
bin()转换为十进制二进制,hex是十进制转16进制,oct是转换8进制
编程时就是写了字符串,要想保存到硬盘上就要编码。存到内存中用unicode,硬盘上自己选择编码。
name = ‘你好’,bytes(name,encoding='utf-8').decode(utf-8),将字符串按照utf-8编码,1个汉字占用3个字节,然后解码。ASCII码不能编中文
divmod(10,3)结果(3,1),分页功能。用在搜索结果分页上,10个搜索结果,每页3条,则需要3+1页面显示结果
evel()功能,1,把字符串的数据结构提取出来,例如从字符串包含字典中,提取出字典来。2,可以把字符串中的数学运算做一遍
hash运算,1不论输入多长,输出定长,2不能根据输出反推出输入。同样输入,输出一一定,可校验软件安装包是否安全
help(dir)获取函数的帮助文档。dir获取函数有哪些模块。
isinstance(1,int),判断1是否为int类型
print(globals()),打印出全局变量,locals打印出局部变量
print(_file_)打印出文件路径
zip(('a','b','c'),(1,2,3)),拉链函数,生成三个元组('a',1),左边一个对应右边一个。zip前后两个参数,只要是序列类型即可,元组,列表,字符串都是序列类型
max函数和min是一对。第一步:处理的是可迭代对象,相当于一个for循环取出每个元素进行比较。第二步,元素之间比较大小是从每个元素的第一个位置依次比较
比较字典的value值大小时,先用zip函数生成新的元组序列,然后max即可。不同数据类型不能比较。
max(people, key=lambda dic:dic['age'],将字典people中元素遍历取出,每个调用一遍lambda函数,然后比较大小
chr(97)和ord('a')是一对
pow(3,3,2),3的3次方,对2取余数。如果只有两个,叫3的3次方
round(3.5)。四舍五入
slice(1,4,2),对字符串切片,左闭右开,步长为2
type()查看元素的数据类型
vars(),如果没有实参,则等效于locals,即局部变量。如果有实参int,则将实参int的所有方法存储为字典形式
import,模块就是py文件。import不能导入字符串,_import_()导入的就是字符串类型文件
这篇关于python基础5-变量/递归函数/函数式编程/内置函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
您可能喜欢
Python编程基础详解
11-24
Python编程基础教程
11-21
Python编程基础与实践
11-20
Python编程基础与高级应用
11-20
Python 基础编程教程
11-19
Python基础入门教程
11-19
在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
11-17
`PyMuPDF4LLM`:提取PDF数据的神器
11-16
四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
11-16
获取参数学习:Python编程入门教程
11-14
Python编程基础入门
11-14
Python编程入门指南
11-14
Python基础教程
11-13
Python编程基础指南
11-12
Python基础编程教程
11-12
栏目导航
前端开发
HTML5教程
CSS教程
Javascript
jQuery教程
AJAX教程
Node.js教程
XML教程
正则表达式
后端开发
Go教程
C/C++教程
消息队列MQ
Net Core教程
Asp.net教程
Java教程
PHP教程
移动端开发
微信公众号开发
小程序开发
Swift教程
IOS教程
Kotlin教程
Android开发
数据库
Redis教程
MongoDB教程
PostgreSQL教程
Oracle教程
MariaDB教程
SqLite教程
MySql教程
SqlServer教程
服务器运维
Kubernetes
Docker容器
linux shell
Nginx教程
网站安全
PowerShell教程
Linux教程
人工智能
TensorFlow教程
Python教程
机器学习
人工智能学习
区块链
区块链技术
游戏开发
游戏编程
Unity3D教程
网站运营
网站策划
网站优化
建站知识
大数据/云计算
云计算
Hadoop教程
软件工程
软件/开发工具使用
Git教程
资讯