python_01

#!/usr/bin/env python
python3源码文件以utf-8编码,所有字符串都是unicode,即可以写中文
\033[31;1m内容\033[0m 使 内容 输出为红色

.pyc文件:
3.5下,在运行完一个模块后,在site-packages下的__pycache__目录下会产生对应的.pyc文件
编译型语言:在执行前会把程序转变成机器语言,运行时就不需要编译直接执行,效率高
解释型语言:没有这个编译过程,而是在程序运行时,通过解释器对程序逐行做出解释,然后直接运行
而python可理解为先编译后解释的语言,当py程序运行时,编译的结果是保存在内存中的pycodeobiect中,当py程序结束运行时,解释起将pycodeobject写入pyc文件中;第二次运行该程序时,先查找pyc文件并比较pyc更新时间和源程序更新时间,看是否有修改
pyc中的内容是预编译后的字节码文件,还不是机器码,离半成品也有点距离

三元运算:
即result = 值1 if 条件 else 值2
在存变量时也会进行一次判断看存放的内容是什么

for index,item in enumerate(name):
print(index,item) 循环打印出列表name中的内容,并在最前面加上编号

变量:用于存放后面需要用到的东西
定义规则:
变量名只能是字母,数字或下划线;变量名的第一个字符不能是数字;不能使用py中的标准;变量对大小写敏感
name = 'test'
python中的变量是作为一个指向,指向了内存中的指定地址。所以不会出现name1指向name2的情况,而是name1指向name2所指向的地址
python中没有常量的概念,可使用变量名大写来代表这是个常量,但还是可以进行修改
python保留字:
保留字即关键字,不能用于变量名。python的标准库提供了一个keyword模块,可以输出当前版本的所有关键字:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', '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']

字符编码:
GB2312:在原有的ASCⅡ码上增加而已,在127之后的一段空间内,如果指向了这段空间,则重定向到另外一张中文字符表进行查找。1980年收录了7000多个字符;1995年GBK收录了21000多个,成为标准,指代中文windows内码
显然ASCⅡ无法满足,所以出了一种新编码:unicode。统一码,解决了传统的字符编码方案的局限,规定字符和符号都占两个字节
utf-8:可变长的unicode,一个英文字符占一个字节,一个中文字符占三个字节
软件使用了GBK编码,可将GBK转成unicode,即unicode是一个中间过渡,先转换成unicode再转换成想要的编码,转码:
s = '你好' 现在是utf8编码格式
s_to_gbk = s.decode('utf-8').encode('gbk') s.告知当前编码格式进行解码.告知目的编码格式进行编码
python3默认是unicode,所以不需要解码,直接编码 s.encode('gbk'),并且会将s转为一个byte类型,再编码一次数据类型恢复成字符串
不同编码之间的转换都要经过unicode,先解码decode再编码encode

python中的注释:
单行注释以 # 开头
多行注释可以用多个 # 号,还有 ''' 和 """ :
'''
这是多行注释,用三个双引号
这是多行注释,用三个双引号
'''
注意python中的单双引号没有太大区别

行与缩进:
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {}
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数,如:
if True:
print ("True")
else:
print ("False")

多行语句:
python 通常是一行写完一条语句,但如果语句很长,可以使用反斜杠(\)来实现多行语句,如:
total = item_one + \
item_two + \
item_three
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(\)

空行:
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构
记住:空行也是程序代码的一部分

同一行显示多条语句:
python可以在同一行中使用多条语句,语句之间使用分号(;)分割,如:
import sys; x = 'runoob'; sys.stdout.write(x + '\n')

用户输入:
name = input('please input your name: ')
使用这个变量:在位置中写入%s然后在后面写%()
如:print('your name is %s%s%s'%(name1,name2.name3))
通过input进去的变量都是字符串类型,可通过print(type(name))查看类型
str(name)将name转换为字符串类型
也可以直接使用{name}使用变量,如:
print{name1,name2}.format(name1=new_name1,name2=new_name2)
密码不可见
import getpass
password = getpass.getpass('password:')

print 输出:
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":
print(name)
# 不换行输出:end 关键字
关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符:
print(x, end=',')

模块初识:import 模块
第三方库:python中必须下载安装才能使用的模块
标准库-sys模块:
sys.path python的环境变量
sys.argv[0] 0为.py文件名,1以后为参数
标准库-os模块:
os.system('df -h') 使用系统命令,注意这个命令的输出直接去往屏幕,不会保存在变量中,所以如果用变量进行保存,结果是保存了命令的执行返回值
os.popen('df -h') 这个命令打印的是内存的对象地址,可以再调用来返回结果:os.popen('df -h').read()
模块既是一个py脚本,可以自己创建,注意如果要作为import的话,必须把对应的脚本放在同一个目录或者是环境变量下,当前目录优先

import 与 from...import:
在 python 用 import 或者 from...import 来导入相应的模块
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *

posted @ 2018-09-27 14:26  有只贵族  阅读(143)  评论(0编辑  收藏  举报