一.python内容总结:
1.for循环:
for循环其实本质是一种迭代,
for 变量 in 容器:
print()
变量就是容器中的具体值
for循环也可以搭配else和elif使用
2.闭包:
能够访问函数内部变量的函数
函数内部包含函数
局部变量全局化

3.列表生成式:
本质就是for循环,for循环的优雅写法
可以通过列表推导式可以很容易实现大量列表数据的创建
一次性匹配完(贪婪匹配),当数据量多的时候,直接生成数据,内存太大
如果生成复杂的列表,列表推导式过于困难
4.列表生成器:
他不再是直接将元素生成在内存中,而是提供了一段算法,只有使用的时候,
通过next函数调用,则会返回下一个值
一个普通的列表推导式,变成列表生成器,只要将[ ] --> ( )
之后使用next全局函数,每一次返回一个生成器的元素
将函数转换为列表生成器时,我们需要使用yield关键字,yield关键字不同与return,yiele会返回值,然后执行中断,下次执行时会从中断位置继续执行,而return返回值后结束执行,下次执行时重新执行

5.可迭代对象和迭代器:
够被循环调用,返回下一个值的,称为可迭代对象
字符串、列表、元组、字典、集合都是可迭代对象
迭代器(Iterator):
可以通过next函数调用,并且返回下一个值的对象
iter(Iterable) ==> Iterator
6.类和对象
类(class):
类指的就是一个类别,一个逻辑概念,不是真实存在,是人为认知的概念,大而空
类是个抽象概念,并不存在
固有特性:类的静态属性
动态的行为动作:
函数来描述过程
方法(method)
对象(object):
类中的一个具体的实实在在的案例(实例)
面向对象的三大特性:
封装
继承
多态
封装:
封装指的就是将事物包装起来
面向对象中的封装是一种特指:
|-- 使用类来定义封装很多数据
|-- 将类中的属性私有化(不允许外界访问),同时提供公开的getter和setter方法来访问的方式
在属性面前加双下划线(__)用来封装
例:
self.__name = "wj"
对外的公共接口
getter方法 用来让外界获取(访问)属性
def get()
setter方法 用来让外界设置、修改属性
def set()
def studtying(self):
self.__network()
def network(self):
"""
如果某个方法,仅仅是在类内部使用,不需要外界调用
则可以私有化这个方法
"""
封装的其它两种写法
class User:
def __init__(self,age):
self.__name = name
self.__age = age
def get_name(self):
return self.__name
def set_name = name
self.__name = name
name = property(get_name,set_name)
#property关键字
class User:
def __init__(self,age):
self.__name = name
self.__age = age
@property
def name(self):
return self.__name
@name.setter
def name(self,name):
self.__name = name
继承(extend):
子类会继承父类中能够继承的属性和方法
子类:继承了某个类的类
父类(超类)super:被继承的类
注意:在继承过程中,不一定会继承父类的所有属性和方法,只能继承没有私有化的属性和方法
super关键字:
在python,super关键字代指的就是父类
如果需要在子类中特定的调用父类的方法:
super().xxx()
2.assert和eval:
eval失败原因:
eval是语言构造器而不是一个函数,不能被可变函数调用
可变函数即变量名加括号,PHP系统会尝试解析成函数,如果有当前变量中的值为命名的函数,就会调用。如果没有就报错。
·
可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require eval() 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。
assert
assert在php中被认为是一个函数

985

被折叠的 条评论
为什么被折叠?



