python实例

Python语言高频重点汇总

我怕爱的太早我们不能终老 提交于 2020-02-20 17:55:37
Python语言高频重点汇总 GitHub面试宝典仓库——点这里跳转 文章目录 Python语言高频重点汇总 **GitHub面试宝典仓库——点这里跳转** 1. 函数-传参 2. 元类 3. @staticmethod和@classmethod两个装饰器 4. 类属性和实例属性 5. Python的自省 6. 列表、集合、字典推导式 7. Python中单下划线和双下划线 8. 格式化字符串中的%和format 9. 迭代器和生成器 10. args和**kwargs 11. 面向切面编程AOP和装饰器 12. 鸭子类型 13. Python中的重载 14. 新式类和旧式类 15. `__new__`和`__init__`的区别 16. Python中的作用域 17. GIL线程全局锁 18. 协程 19. 闭包 20. lambda匿名函数 21. Python中函数式编程 22. Python中的拷贝 23. Python的垃圾回收机制 24. List 25. Python中的is 26. read, readline和readlines 27. Python2和Python3的区别 28. super init 1. 函数-传参 回到顶部 在python中,给一个函数传递参数其实是把实参这个变量对应的地址复制了一份,然后把复制的这个地址传递给函数中局部变量形参

Python类

爱⌒轻易说出口 提交于 2020-02-20 16:28:36
class Dog():#在Python中,首字母大写的名称指的是类。 """一次模拟小狗的简单尝试""" """__init__()是一个特殊的方法,每当根据Dog类创建新实例时,Python都会自动运行它""" def __init__(self,name,age): """在这个放大的定义中self必不可少,还必须位于其他形参的前面。 Python调用这个__init__方法来创建Dog实例时,将自动传入实参self。与每个类相关联的的方法 调用都自动传递实参self它是一个指向实例本身的引用,让实例能够访问类中的属性和方法""" """初始化属性name和age""" self.name = name """以self为前缀的变量都可供类中的所有方法使用,我们还可以通过类的任何实例来访问这些变量""" self.age = age def sit(self): """模拟小狗被命令时蹲下""" print(self.name.title() + " is now sitting.") def roll_over(self): """模拟小狗被命令时打滚""" print(self.name.title() + "rolled over!") my_dog = Dog('willie',6) """方法__init__()并未显式地包含return语句

字典的用法

爱⌒轻易说出口 提交于 2020-02-20 14:15:04
python 字典的一些操作 特点:无序,是唯一内置的映射类型。多用于实现哈希表或者关联数组。 key 具有唯一性,可以使用固定长度的对象,不能使用列表、字典和包含可变长度类型的元组。访问形式: m[k], k是 key。如果找不到,报错: KeyError。 方法和操作如下: 项目 功能 len(m)   Key的长度 m[k]  字典m中,key为k的值 m[k]=x  字典m中,k的值为x del m[k]  删除字典键 k in m  有没有 k的 key m.clear()   m.copy()  浅复制 m.fromkeys(s [,value])   m.get(k [,v])   m.has_key(k)   m.items()   m.keys()   m.pop(k [,default])   m.popitem()   m.setdefault(k [, v])   m.update(b)   m.values()   *构建字典 字典举例: phonebook = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 函数 Dict可以从其他映射或者序列构建字典 >>> items = [('name', 'Gumby'), ('age', 42)] >>> d = dict(items) >>> d {

全面解析python类的绑定方法与非绑定方法

时光总嘲笑我的痴心妄想 提交于 2020-02-20 03:19:35
类中的方法有两类:  绑定方法  非绑定方法 一、绑定方法   1.对象的绑定方法   首先我们明确一个知识点,凡是类中的方法或函数,默认情况下都是绑定给对象使用的。下面,我们通过实例,来慢慢解析绑定方法的应用。 class People: def __init__(self,name,age): self.name = name self.age = age def talk(self): pass p = People('xiaohua',18) print(p.talk) 输出结果: <bound method People.talk of <__main__.People object at 0x000000F802C69358>>   从上面的输出结果来看,talk()這个类中的方法,是绑定给对象使用的。下面,我在看看另外一种情况。 class People: def __init__(self,name,age): self.name = name self.age = age def talk(): pass p = People('xiaohua',18) print(p.talk) 输出结果: <bound method People.talk of <__main__.People object at 0x000000FF68F39358>>   现在

Python 中的单例模式

旧巷老猫 提交于 2020-02-20 03:18:44
单例模式 单例模式(Singleton Pattern) 是一种常用的软件设计模式,该模式的主要目的是确保 某一个类只有一个实例存在 。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多的情况下。事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象。 在 Python 中,我们可以用多种方法来实现单例模式: 使用模块 使用 __new__ 使用装饰器(decorator) 使用元类(metaclass) 使用模块 其实, Python 的模块就是天然的单例模式 ,因为模块在第一次导入时,会生成 .pyc 文件,当第二次导入时,就会直接加载 .pyc 文件,而不会再次执行模块代码。因此,我们只需把相关的函数和数据定义在一个模块中,就可以获得一个单例对象了。如果我们真的想要一个单例类,可以考虑这样做: # mysingleton.py class My_Singleton(object): def foo

关于python的类成员、实例成员、静态成员的对比与联系

六眼飞鱼酱① 提交于 2020-02-20 02:15:39
preface:本文是https://blog.csdn.net/qq_31780525/article/details/72639491一文的补充。 Python中的静态成员、非静态成员,与C#的静态成员、非静态成员有着一种千丝万缕的区别,此文专门针对这种区别,进行详细讨论。 推荐大家先看代码段,再看结论。边看代码段边思考。 首先,我们不妨将这种不带get、set方法的类成员属性称作为“字段”(C++,C#的说法)。此时,有如下代码段: 代码段_1 class people: name="Skar" #这个“字段”,既是类的,也是实例的,本文给它起个名字,叫“调皮字段” age=20 #同样,这个“字段”,既是类的,也是实例的 p=people() #p是people的一个实例 print(p.name) #打印结果:"skar"。所以,p的名字叫“skar”,符合认知 print(people.name) #打印结果:"skar"。所以,people的名字叫“skar”,但不符合认知 print(p.age) #打印结果:20。所以,p的年龄为20,符合认知 print(people.age) #打印结果:20。所以,people的年龄为20,但不符合认知 所以,在代码段_1中,并没有真正的“类字段”,也就是C#中的静态字段。同样的,也没有真正的“实例字段”,也就是C#中的

Python类

大城市里の小女人 提交于 2020-02-20 00:28:25
Python类 1 创建类 class Dog(): """模拟小狗""" def __init__(self,name,age): """初始化属性""" self.name = name self.age = age def sit(self): """模拟蹲下""" print(self.name + " 蹲下 !") def roll_over(self): """模拟小狗打滚""" print(self.name + " 滚一个 !") 2 根据类创建实例 class Dog(): ...snip... my_dog = Dog('小白',3) print("My dog's name is " + my_dog.name) print("My dog is " + str(my_dog.age) + " years old.") 2.1 访问属性 my_dog.name class Dog(): ...snip... my_dog = Dog('小白',3) print("My dog's name is " + my_dog.name) 2.2 调用方法 my_dog.sit() my_dog.roll_over() class Dog(): ...snip... my_dog = Dog('小白',3) my_dog.sit() my_dog.roll_over()

Django 初试水(二)

痞子三分冷 提交于 2020-02-19 18:30:20
这部分链接上一部分。将建立数据库,创建第一个模型,并主要关注 Django 提供的自动生成的管理页面。 打开 mysite/setting.py 文件。这包含了 Django 项目设置的 Python 模块。通常,这个配置文件使用 SQLite 作为默认的数据库。 在此,我只是作为试水,不打算切换数据库。当然有需要的,可以自己去使用一些更具扩展性的数据库,例如 PostgreSQL 等。 如果你想使用其他数据库,你需要安装合适的 database bindings ,然后改变设置文件中 DATABASES 'default' 项目中的一些键值: ENGINE -- 可选值有 'django.db.backends.sqlite3' , 'django.db.backends.postgresql' , 'django.db.backends.mysql' , 或 'django.db.backends.oracle' 。其它 可用后端 。 NAME - 数据库的名称。如果使用的是 SQLite,数据库将是你电脑上的一个文件,在这种情况下, NAME 应该是此文件的绝对路径,包括文件名。默认值 os.path.join(BASE_DIR, 'db.sqlite3') 将会把数据库文件储存在项目的根目录。 如果你不使用 SQLite,则必须添加一些额外设置,比如 USER 、

4 python 类的专有方法介绍

寵の児 提交于 2020-02-19 17:03:04
1、 __init__ : 构造函数,在生成对象时调用 该方法是在对象产生之后才会执行,只用来为对象进行初始化操作,可以有任意代码,但不一定有返回值。 所谓初始化构造函数就是在构造对象的同时被对象自动调用,完成对事物的初始化,一个类只要生成一个类对象,它一定会调用初始化构造函数. 特点: 1>一个类中只能有一个初始化构造函数 2>不能有返回值 3>可以用它来为每个实例定制自己的特征 class Chinese: country = 'china' def __init__(self,name,sex,age): self.name = name self.sex = sex self.age = age def tell_info(self): info = f""" 国籍:{self.country} 姓名:{self.name} 性别:{self.sex} 年龄:{self.age} """ print(info) s1 = Chinese('alex','man','22') s2 = Chinese('alex2','woman','23') s3 = Chinese('alex3','man','21') 2、_mro_解析方法调用的顺序 继承的实现原理(多继承查找) >>> F.mro() #等同于F.__mro__ (<class '__main__.C'>,

python属性

随声附和 提交于 2020-02-19 16:57:11
<1>属性包装:将方法包装成属性,以隐藏相关的现实,进而控制属性的类型或范围;是虚拟的属性 外界访问时就可以像访问类属性一样使用点(.)的方式 <2>属性包装的三种操作:   <1>@property   <2>@property_name.setter   <3>@property_name.deleter 例子:   class Person:    def __init__(self, name="seven", age=None):    self._name = name      self.age = age @property def name(self):      return self.name @name.settter    def name(self, name): if 0 < name <=18: self._name = name else: print("errors!") if __name__ == '__main__':    p = Person() print(p.name) <3>__call__():让类的实例像方法一样可调用 class Pepole:   def __call__(self):     print("call") if __name__ == '__main__': p = Person()   p() <4