python实例

Django初体验

僤鯓⒐⒋嵵緔 提交于 2020-03-11 07:39:27
为什么使用Django 快速开发 使用python 数据库ORM系统 大量内置应用 后台管理系统 admin 用户认证系统 auth 会话系统 sessions 安全性高 表单验证 SQL注入 跨站点攻击 易于扩展 Django知识储备 python基础 数据库SQL HTTP协议 HTML & CSS 正则表达式 Django 开发环境 python ipython: 支持自动补齐 安装pip: sudo apt-get install python-pip 安装django: pip安装 sudo pip install django 源码安装 git clone https://github.com/django/django.git python setup.py install 第一个django项目 django-admin startproject mysite python manage.py runserver Django 创建工程和应用 工程目录详解 manage.py: django总管命令 python manage.py runserver python manage.py shell python manage.py migrate - etc... mysite setttings.py: 网站的配置文件 urls.py: URL映射配置文件,

python设计模式

懵懂的女人 提交于 2020-03-10 19:43:38
转载自品略图书馆: http://www.pinlue.com/article/2020/03/1009/2210006503225.html 1.创建型模式 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样 2.当你想要创建一个可扩展的关联在创建类与支持创建对象的类之间。 一个例子更能很好的理解以上的内容: 我们有一个基类Person ,包涵获取名字,性别的方法 。有两个子类male 和female,可以打招呼。还有一个工厂类。 工厂类有一个方法名getPerson有两个输入参数,名字和 会严重浪费内存资源,尤其是在配置文件内容很多的情况下。事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象 class Singleton(object): def __init__(self): pass def __new__

八、Python 模块

有些话、适合烂在心里 提交于 2020-03-10 15:02:38
1、Python3 模块定义 1) Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块 2) 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py 3) 模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。 2、import 语句 1) 想使用 Python 源文件,只需在另一个源文件里执行 import 语句 2) 一个模块只会被导入一次,不管你执行了多少次import 语法如下: import module1[, module2[,... moduleN] import sys # import sys 引入 python 标准库中的 sys.py 模块;这是引入某一模块的方法 print('命令行参数如下:') for i in sys.argv: # sys.argv 是一个包含命令行参数的列表 print(i) print('\n\nPython 路径为:', sys.path, '\n') #sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表 3、from … import 语句 Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中 语法如下: from modname import name1[, name2

Python学习第三十三课——ORM(多表查询,多对多)以及双下划线的用法(重要)

蹲街弑〆低调 提交于 2020-03-10 09:48:51
除了modios.py和views.py其他都与前面的一样: modios.py 要建立多对多的关系 from django.db import models # Create your models here. # 一对多建表 class Book(models.Model): # 表名 name = models.CharField(max_length=20) # name字段 price = models.IntegerField() # 字段 pub_date = models.DateField() # 字段 publish = models.ForeignKey("Publish", on_delete=models.CASCADE) # Publish 是下面的类 author = models.ManyToManyField("Author") # 建立多对多的关系 def __str__(self): return self.name class Publish(models.Model): # 一个出版社可以出多本书,按道理一般将外键建立到多的一方 name = models.CharField(max_length=32) city = models.CharField(max_length=32) def __str__(self): return

开始你的第一个Django应用【Python web实战】

杀马特。学长 韩版系。学妹 提交于 2020-03-09 18:18:10
在这篇教程中,我们将设置你的数据库,创建你的第一个模型,并快速介绍Django的自动生成的管理站点。 ps注意很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃。为此小编建了个Python全栈免费答疑.裙 :七衣衣九起起巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步! 数据库配置 现在打开 mysite/settings.py 这是一个普通的python模块,模块变量表示Django的设定。 默认情况下,Django配置使用SQLite数据库。如果你是数据库初学者,或者只是感兴趣想随便试试Django,这是最简单的选择。SQLite包含在Python内,因此你不需要安装任何其他东西来支持你的数据库。所以当你开始你的第一个真实项目时,你会想要使用一个更具扩展性的数据库,比如PostgreSQL,以避免数据库切换引发的麻烦。 如果你希望使用其他数据库,安装合适的数据库绑定并且在 DATABASES'default' 项目中修改keys以匹配数据库连接设置: ENGINE 比如 'django.db.backends.sqlite3', 'django.db.backends.postgresql', 'django.db.backends.mysql', or 'django.db

python学习之正则表达式

我的梦境 提交于 2020-03-09 16:43:52
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。 下图展示了使用正则表达式进行匹配的流程: 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白。 下图列出了Python支持的正则表达式元字符和语法: 1.2. 数量词的贪婪模式与非贪婪模式 正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。 1.3. 反斜杠的困扰 与大多数编程语言相同,正则表达式里使用"

python 面向对象练习题

时间秒杀一切 提交于 2020-03-09 14:59:52
1,面向对象三大特性,各有什么用处,说说你的理解。 继承:解决代码重用问题 多态:多态性,可以在不考虑对象类型的情况下而直接使用对象 封装:明确的区分内外,控制外部对隐藏属性的操作行为,隔离复杂度 2,类的属性和对象的属性有什么区别? 类的属性:数据属性和函数属性,数据属性是所有对象共有的,函数属性是绑定对象使用的 对象的属性:对象是类的实例化 3,面向过程编程与面向对象编程的区别与应用场景? 面向过程:复杂的问题流程化,简单化 应用场景:不再需要扩展了,监测脚本,自动部署脚本,软件解压安装 面向对象:特征与技能的结合体 一切皆对象 应用场景:用户需求经常变化,互联网应用,游戏,企业内部应用 4,类和对象在内存中是如何保存的。 类和对象的属性:以字典的形式保存的 5,什么是绑定到对象的方法、绑定到类的方法、解除绑定的函数、如何定义,如何调用,给谁用?有什么特性 绑定到对象的方法:就应该由对象来调用,def tell_info(self):...obj.tell_info() 绑定到类的方法:就应该由类来调用,@classmethod def from_conf(cls):... class.from_conf() 非绑定方法:不与类或对象绑定,谁都可以调用,@staticmethod def create_id():... obj.create_if()/class.create

python面向对象进阶之元类metaclass

柔情痞子 提交于 2020-03-09 12:17:15
一:知识储备 exec exec:三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定,默认为globals() 参数三:局部作用域(字典形式),如果不指定,默认为locals() exec的应用: #可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中 g={ 'x':1, 'y':2 } l={} exec(''' global x,z x=100 z=200 m=300 ''',g,l) print(g) #{'x': 100, 'y': 2,'z':200,......} print(l) #{'m': 300} __call__方法:对象后面加括号,触发执行。 注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()() class Foo: def __init__(self): pass def __call__(self, *args, **kwargs): print('__call__') obj = Foo() # 执行 __init__ obj() # 执行 __call__ __call__的应用: # 知识储备__call__方法 class Foo: def __call__(self, *args

《Fluent Python》- 03 字典和集合

帅比萌擦擦* 提交于 2020-03-09 11:54:23
字典这个数据结构活跃在所以Python程序背后,即便你没有直接用到它 泛映射类型 非抽象映射类型通常是不会继承抽象基类的。它们会直接对dict或者是collection.UserDict进行扩展。而抽象基类通常的作用是形式化的文档,它们还可以跟isinstance一起被用来判断某个数据是不是广义上的映射类型。 这里用isintance而不是type来检查,是因为这个参数有可能不是dict。 my_dict = {} print(isinstance(my_dict, abc.Mapping)) # True 标准库里的所有映射都是利用dict来实现的,英雌有个限制,只有可散列的数据类型才能用作这些映射里的键。 关于可散列:如果一个对象是可散列的,那么在这个对象的生命周期中,它的散列值是不变的,而且这个对象需要实现__hash__()方法。另外可散列对象还要有__eq__()方法,这样才能和其他键做比较。 关于Python中“Python里所有的不可变类型都是可散列的”这句话其实是不太准确的,比方说元祖,它本身是不可变的,但是内部元素却可能是可变的。 字典推导 自Python2.7以来,列表推导和生成器表达式的概念就移植到了字典上,从而有了字典推导。字典推导可以从任何以建值对作为元素的可迭代对象中构建出字典。 DIAL_CODES = [(86, 'China'), (91,

python学习笔记(七):面向对象编程、类

不羁的心 提交于 2020-03-09 09:28:27
一、面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想。在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一个功能。举个例子,你要做饭,可以用电磁炉,也可以用煤气灶。不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,两种最重要的编程范式分别是面向过程编程和面向对象编程。 提到面向对象,就不得不提到另一种编程思想,面向过程;什么是面向过程呢,面向过程的思想是把一个项目、一件事情按照一定的顺序,从头到尾一步一步地做下去,先做什么,后做什么,一直到结束。这种思想比较好理解,其实这也是一个人做事的方法,我们之前编程的思想也都是使用这种思想。这种编程思想,只要前面有一个步骤变了,那么后面的就也要变,后面维护起来比较麻烦,这样的编程思想,我们在写一些简单的小程序、只执行一次的脚本时可以使用。而面向对象呢,面向对象的思想是把一个项目、一件事情分成更小的项目,或者说分成一个个更小的部分,每一部分负责什么方面的功能,最后再由这些部分组合而成为一个整体。这种思想比较适合多人的分工合作,就像一个大的机关,分各个部门,每个部门分别负责某样职能,各个部门可以充分发挥自己的特色,只要符合一定前提就行了。 举个例子:比如刚才说的一个大的机关,要做某一个项目,从面向过程的思想来说,应该是这样分析的