概述
循环
基本的格式为: for 变量 in 可迭代对象
可迭代的对象包括
- 序列:字符串,列表,元组
- 字典
- 迭代器对象(iterator)
- 生成器函数(generator)
- 文件对象
- range对象
else语句
对于for和while语句 可以附带else语句,如果for语句有被break语句结束,则会执行else语句。
zip()
zip()并行迭代
for a,b,c in zip(as,bs,cs)
print();
推导式创建序列
推导式是一个或者多个迭代器快速创建序列的一种方法。可以将循环与条件判断结合,避免冗长代码。
列表推导式生成列表对象
[表达式 for item in 迭代对象]
>>> [x for x in range(1,5)]
[1,2,3,4]
>>> [x*2 for x in range(1,5)]
[2,4,6,8]
>>> [x*2 for x in range(1,5) if x%2==0]
[2,4,6,8]
字典推导式(Map)
{key :value for 表达式 in 迭代对象} 生成字典对象
/>>>
集合推导式(Set)
{表达式 for item in 迭代对象} 生成字典对象
/>>>
生成器推导式(生成元组)
(表达式 for item in 迭代对象) 生成的对象只能使用一次
函数用法与底层分析
Python中的函数分类
- 内置函数,例如str(),list(),len()函数是直接可以用的
- 通过import语句导入库
- 第三方库,通过安装后可以通过import方法引入函数
- 自定义函数
自定义函数
def 函数名 ([参数列表]):
调用函数时不用使用分号结尾
变量的作用域
全局变量:
- 作用域为定义的模块
- 全局变量一般作为2常量作用
- 如果在方法中修改全局变量需要修改gobal
局部变量:
- 函数体中声明的变量
- 如果局部变量与全局变量重名则隐藏全局变量,只是用局部变量。
参数的传递
对于可变的对象(字典,列表,集合,自定义对象等)实际传递的是对象的引用。浅拷贝
对于不可变的对象(数字,字符串,元组,function等)实际是会产生的一个新的对象。深拷贝。在传递不可变对象的时候由于是不可变的对象,实际会创建一个新的对象。
默认值参数
默认值参数必须位于普通位置参数后面,在调用函数时,可以不用加上默认值的参数
可变参数
可变参数指的是可变数量的参数。分为两种情况
- *param,将多个参数收集到一个元组对象汇总
- **param(两个星号)将多个参数收集到字典中
强制命名参数
带有星号的可变参数,后面增加新的参数,必须是强制命名参数
def f1(*a,b,c)
print(a,b,c)
f1(2,3,4) # 会报错。由于a是可变参数,将2,3,4全部收集。造成b和c没有赋值
f1(2,b=3,c=4)
lambda表达式和匿名函数
lambda表示可以用来声明匿名函数。lambda函数的基本语法:
lambda arg1,arg2,arg3 : <表达式>
arg1/arg2/arg3 分别为函数的参数。<表达式>相当于函数体。运算结果是:表达式运算结果。
例如:f = lambda a,b,c,d:abc*d
嵌套函数
内部函数用来封装逻辑
nonlocal关键字
nonlocal用来声明外层的局部变量
gobal用来声明全局变量
LEGB规则
Python在查找名称时,是按照legb的规则查找的即local–>enclosed–>global–>bulit-in
如果变量在局部没有找到就会在闭包区域(enclosed)找,在全局变量中查找,最后会在内建命名空间搜索
最后
以上就是可爱百褶裙为你收集整理的Python语法基础(四)循环,函数的全部内容,希望文章能够帮你解决Python语法基础(四)循环,函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复