序列
list() ——把一个可迭代对象【可以是字符串,元组】转化为列表,可不带参数——生成空列表,或者带一个迭代器作为参数
tuple() ——可迭代对象转化为元组
str(obj) ——把obj对象转换为字符串,返回一个对象的string格式
len(x) ——返回x的长度
max() ——返回序列或参数集合中的最大值
min() ——最小值 【max与min中的类型必须一样】
代码:
输出:
sum(iterable,n) ——返回序列iterable和可选参数n的数值总和【非数字类型不可】
sorted() ——排序
reversed() ——返回迭代器对象
enumerate() ——枚举 返回迭代器对象 通过list()后产生[(0,n),(1,x),(2,y)……]
zip(a,b) ——返回参数的序列组成的元组
a = [1,2,3] b=[4,5,6]
list(zip(a,b)) = [(1,4),(2,5)...] ——zip的返回值类型是对象
函数参数
关键字参数:
调用:
xx(a='ccc',b='ddd') 即可以无视参数前后位置的影响
定义:
def xx(a,b):
...
默认参数:【定义 + 调用使用】 必须放在最后,否则会报错
def xxx(a,b='123'):
……
即如果没传入b参数,则b使用默认值123
调用的时候可以不写参数,也可以重新定义参数
收集参数(可变参数)
def xxx(*y):
……
可以传多个参数 xxx('...',1,2.3,5,6,7) 【这些参数被当作元组处理】
#如果需要收集参数 + 固定参数【用关键字参数 + 默认参数处理】
python 只有函数【有return 返回值就返回那个,没有就返回一个None对象】,没有过程
类型属于对象,变量是没有类型的
迭代
是重复反馈过程的活动,接近并达到目标 每次迭代后的结果,作为下次迭代的初始
定义函数:
def xxx():
xxx……
xxx……
调用函数:
xxx() / xxx(参数)
含参数函数:
def xx(a,b):
……
xx(1,2) / xx('aaaa','bbbbb')
函数的返回值:
return ……
不带参数值的return语句返回None
函数文档
函数内部的注释,可用xx._doc_ 打印
#这里是注释
return 默认返回一个元组【可修改】
return 1,2,'haha' —— (1,2,'haha')
return [1,2,'haha'] —— [1,2,'haha']
全局变量的修改
在函数内部修改的话,python会自动创建一个一模一样的局部变量【屏蔽方法】,从而不会修改全局变量
若想修改---> global
输出:10 30
内部函数
【作用域【即定义和调用】在外部函数之内,出了外部函数就无法调用】
输出:
闭包
【函数式编程】
如果在一个内部函数里对外部作用域【即外部函数】【有引用但不是对全局变量【相对于内部函数而言,外部函数定义的数也是全局变量,所以,可引用但不可修改】的引用 + 修改】,内部函数即被认为是闭包
输出:10
引用且修改:
输出:
如果加上nonlocal x
输出:10
匿名函数
使用lambda关键字创建
lambda x : x + 1 # :左面是参数,右面是返回值
输出:5
filter() 过滤器
有两个参数(函数名【不需要+()】 or None,可迭代对象)
1.第一个是函数的话,把可迭代对象中的数值当作函数的参数使用,返回结果为true的值筛选出来,返回对象,可用list()变成一个list
2.为None时,把可迭代对象中true的值筛选出来
map() 映射
有两个参数(函数名【不需要+()】,可迭代对象),可迭代对象中的数值当作函数的参数使用,直到加工完毕,返回所有加工完毕的结构构成的新序列
递归:
函数调用自身的行为
设置递归的深度:
import sys
sys.setrecursionlimit(100) #设置深度100层
print(' xx '.center(10,'*'))
输出:
输出:
** xxxx **
输出变量值:
>>>i =256*256>>>print('i 的值为:',i)i 的值为:65536
end 关键字
关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符
# Fibonacci series: 斐波纳契数列# 两个元素的总和确定了下一个数a, b= 0, 1whileb< 1000:
print(b, end=',')a, b= b, a+b
执行以上程序,输出结果为:
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
print() sep 参数使用:
>>>a=10;b=388;c=98>>>print(a,b,c,sep='@')10@388@98