本博文为系列性博文,如果是像我一样的小白起步的话,强烈建议从0看起
https://blog.csdn.net/zisefeizhu/article/details/82529720
控制语言:胶水语言
python一切届对象
框架:web Django
字节码:bytecode
python既面向过程也面向对象
python的缩进一般是四个字符 当然也可以不是4个字符,但在一个代码块中要保持一致
面向过程:
以指令为中心,由指令处理数据
如何组织代码解决问题
面向对象;
以数据为中心,所有的处理代码都围绕数据展开
如何设计数据结构组织数据,并提供对此类数据所允许处理操作
python2.6.6
#python
第一个代码
>>> print "hello world"
获取操作系统信息
>>> import platform
>>> print platform.uname()
查看内置函数
>>> dir(platform)
python3.7.0
#python3
第一个代码
>>> print("hello world")
获取操作系统信息
>>> print(platform.uname())
查看内置函数
>>> dir(platform)
简单安装方法:
1.编译安装新版本至某特定路径;
python 3.7
ipython 5.0
2.pyenv
数据类型:转化
隐式
显式
字典:kv集合
{'a':31,'b':78}
快速入门:面向过程
程序=指令+代码
程序=数据结构+算法
数据结构
通过某种方式(例如对元素进行编号)组织在一起的而数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其它的数据结构
python的最基本数据结构是序列
序列中的每个元素被分配一个序号----即元素的位置,也称为索引;索引从0开始编号
Python包含6种内建的数据序列:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象
Python的关键要素
基本数据类型
任何程序语言都必须能够表示基本数据项
python中的基本数据类型有
Integral类型
整型:不可变类型
>>> num = 2
>>> id(num)
264780048
>>> num = 3
>>> id(num)
264780064
布尔型
浮点类型
浮点数
复数
十进制数字
字符串[数据结构] 不可变类型
>>> name = jerry
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
name = jerry
NameError: name 'jerry' is not defined
‘hello’ "hello"
必须要有引号
对象引用(变量)
python将所有数据存为内存对象
python中,变量事实上是指向内存对象的引用
动态类型:在任何时刻,只要需要,某个对象引用都可以重新引用一个不同的对象(可以是不同的数据类型)
内建函数type()用于返回给定数据项的数据类型
>>> name = "jerry"
>>> type(name)
<class 'str'>
>>> type(num)
<class 'int'>
“=”用于将变量名与内存中的某对象绑定:如果对象事先存在,就直接进行绑定;否则,则由“=”创建引用的对象
变量命令规则
只能包含字母,数字和下划线,且不能以数字开头
区分字母大小写
禁止使用保留字
python2与python3的保留字有所不同
命令惯例
以单一下划线开头变量名(_x)不会被from module import *语句导入
前后有下划线的变量名(_x_)是系统定义的变量名,对python解释器有特殊意义
以两个下划线开头但结尾没有下划线的变量名(__x)是类的本地变量
交互式模式下,变量名“_”用于保存最后表达式的结果
>>> 1+1
2
>>> print(_)
2
注意:变量名没有类型,对象才有
组合数据类型
数据结构:通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合
Python常用的组合数据类型
序列类型
列表:使用[]创建,如['Call','me','Tshmeal','']
元组:使用()创建,如('one','two')
字符串也属于序列类型
集合类型
集合
映射类型
字典
列表是可变序列,元组是不可变序列
Python中,组合数据类型也是对象,因此其可以嵌套
['hello','world',[1,2,3]]
实质上,列表和元组并不真正存储数据,而是存放对象引用
Python对象可以具有其可以被调用的特定“方法(函数)”
元组,列表以及字符串等数据类型是“有大小的”,也即,其长度可使用内置函数len()测量;
>>> len(name)
逻辑操作符
逻辑运算是任何程序设计语言的基本功能
python提供了四组逻辑运算
身份操作符
is:判定左端对象引用是否相同于右端对象引用;也可以与None进行;
>>> name = "jerry"
>>> test = "jerry"
>>> name is test
True
>>> type(name) is type(test)
True
比较操作符
< ,>,<=,>=,!=,==
成员操作符
in或not in:测试成员关系
逻辑运算符
and,or,not
控制流语句
控制流语句是过程式编程语言的基本控制机制
python的常见控制流语句
if
while
for ... in
try
算术操作符
python提供了完整的算术操作符
很多的python数据类型也可以使用增强的赋值操作符,如+=,-=等;
同样的功能,使用增强型赋值操作符的性能较好;
python的int类型是不可变的,因此,增强型赋值的实际过程是创建了一个新的对象来存储结果后将变量名执行了重新绑定
输入/输出
现实中,具有实际功能的程序必须能够读取输入(如从键盘或文件中),以及产生输出,并写到终端或文件中;
python的输入/输出
输出
python3:print()函数
python2:print语句
输入
input()
raw_input()
python解释器提供了3种标准文件对象,分别为标准输入,标准输出和标准错误,它们在sys模块种分别以sys.stdin,sys.stdout和sys.stderr形式提供
python的print语句实现打印--一个对程序员友好的标准输出流接口
从技术角度来讲,print是把一个或多个对象转换为其文本表达形式,然后发送给标准输出或另一个类似文件的流
在python种,打印与文件和流的概念联系紧密
文件写入方法是把字符串写入到任意文件
print默认把对象打印到stdout流,并添加了一些自动的格式化
实质上,print函数只是python的人性化特性的具体实现,它提供了sys.stdout.write()的简单接口,再加一些默认的格式设置
printh接受一个逗号分隔的对象列表,并为行尾自动添加一个换行符,如果不需要,则在最后一个元素后添加逗号
%后面可以使用的修饰符,(如果有,则只能按如下顺序)
%[(name)][flags][width][.precision]typecode
位于括号中的一个属于后面的字典的键名,用于选出一个具体项
下面标志中的一个或多个
-:表示左对齐,默认为右对齐
+:表示包含数字符号,正数也会带”+“
0:表示一个零填充
一个指定最小宽度的数字
一个小数点,用于按照精度分割字段的宽度
一个数字,指定要打印字符串中的最大字符个数,浮点数中小数点之后的位数,或者整数的最小位数;
>>> d={'x':32,'y':27.490325,'z':65}
>>> print "%(x)-10d %(y)0.3g" %d
SyntaxError: invalid syntax
>>> print ("%(x)-10d %(y)0.3g" %d )
32 27.5
函数的创建与调用
函数是实现模块化编程的基本组件
python使用def语句定义函数
函数可以参数化,通过传递不同的参数来调用
每个python函数都有一个返回值,默认为None,也可以使用“return value”明确定义返回值
def语句会创建一个函数对象,并同时创建一个指向函数的对象引用
函数也是对象,可以存储在组合数据类型中,也可以作为参数传递给其它函数
callable()可用于测试函数是否可调用
>>> def testfunc(arg1):
print(arg1)
>>> callable(testfunc)
True
>>> testfunc('hello world!')
hello world!
内置模块:>>> dir(__builtins__)
python有众多内置函数
python标准库拥有众多内置模块,这些模块拥有大量函数
python模块实际上就是包含python代码的.py文件,其拥有自定义的函数与类及变量等
导入模块使用import语句进行,后跟模块名称(不能指定模块文件名的后缀.py)
导入一个模块后,可以访问其内部包含的任意函数,类及变量
>>> import random
>>> students = ['a','b','c']
>>> random.choice(students)
'c'
>>> random.choice(students)
'a'
python编程风格
语句和语法
注释
#:可以从一行的任何地方开始
续行
\:放在结尾 且后面不能跟任何
''':闭合操作符,单一语句跨多行
代码组
缩进相同的一组语句构成一个代码块
首行以关键字开始,如if,while等,以冒号(:)结束
python使用缩进来分割代码组,同一代码组必须严格左对齐,否则会造成语法错误
标识符
标识符是计算机语言中允许作为名字的有效字符串集合
其中有一部分是关键字,它们是语言的标识符,因此是保留字,不能用于其它用途
python还有称为“内建”的标识符集合,虽不是保留字,仍不推荐使用这些特别的名字
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
python标识符
第一个字符只能使用字母或下划线
余下的字符可以使用字母,数字或下划线
区分字符大小写
基本编程风格
注释
既不能缺少注释,亦要避免过度注释
文档
python允许通过_doc_动态获得文档字串
缩进
统一缩进4个字串
标识符名称
见名知意
python风格指南
http://www.elias.cn/Python/PythonStyleGuide
python命名惯例
以单一下划线开头变量名(_x)不会被from module import *语句导入
前后有下划线的变量名(_x_)是系统定义的变量名,对python解释器有特殊意义
以两个下划线开头但结尾没有下划线的变量名(__x)是类的本地变量
交互式模式下,变量名“_”用于保存最后表达式的结果
python文件结构
#/usr/bin/env python (1)起始行
"this is a test module" (2)模块文档(文档字符串)
import sys
import os (3)模块导入
debug = True (4)(全局)变量定义
class FooClass (object):
"Foo class"
pass (5)类定义(若有)
def test():
"test function"
foo = funClass()
if debug:
print 'ran test()' (6)函数定义(若有
if_name_ == '_main_':
test() (7)主程序
主程序
无论当前模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码
注意:所有的模块都有能力执行代码
最高级别的python语句(没有缩进的)在模块被导入时就会执行,无论是否真的需要执行
妥当的做法:除了那些真正需要执行的代码以外,所有的功能代码都通过函数建立,因此
仅在主程序模块中编写大量的顶级可执行代码
用于被导入的模块只应该存在较少的顶级执行代码
_name_指示模块应该如何被加载
如果模块是被导入,_name_的值是模块名字
如果模块是直接执行,_name_的值是'_main_'