生成器推导式(生成元组)
元组是没有推导式的
一个生成器只能运行一次,第一次迭代可以得到数据,第二次迭代发现数据吗,没有了。
gnt=(x for x in range(1,100) if x%9==0)
for x in gnt
print(x,end=" ")
运行结果 9 18 27......
print((x,end=" ")
运行结果
函数
python函数的分类
python中函数有以下几类:
函数的定义(此定义为含义的意思)
函数的定义和调用
形参和实参
定义函数时可以在函数中说明函数的作用以至于后期看的时候知道这个函数的作用
lambda表达式和匿名函数
f=lambda a,b,c:a+b+c
print(f)
print(f(2,3,4))
输出结果 9
g=lambda a:a*2
print(g(6))
输出结果12
eval函数的用法
功能: 将字符串str当成有效的表达式来求值并返回计算结果
语法:eval(,source[,globals[,locals]])-> value
参数:
递归函数
自己调用自己
def factiorial(n):
if n==1: return 1
return n*factorial(n-1)
for i in range (1,6):
print(i,'!=',factorial(i))
执行结果
1!=1
2!=2
3!=6
....
5!=120
nonlocal global 关键字
nonlocal 声明外层局部变量
global 声明全局变量
LEGB原则
访问
构造函数__init__
__init__()方法是初始化对象
__new__()才是构造对象
所有构造器一定要有self
self相当于c里面的指针,不一定要定义成self 也可以叫做别的
class Student: #类名一般首字母大写,多个单词采用驼峰原则
def __init__(self,name,age): #self必须位于第一个参数
self.name = name
self.age = age
def say_score(self):
print("name:{0},age:{1}".format(self.name,self.age))
s1 = Student("whium",18)
s1.say_score()
#输出
name:whuim,age:18
实例属性