Python的文件类型、变量以及数值和字符串

时间:2024-05-19 09:58:03

Python的文件类型:

Python的文件类型大致有三种:.py.pyc和.pyo,下面简单讲解一下这三种文件的区别:

1) .py

.py是Python写好的源码文件,这个比较好理解,可以通过shell的命令提示符输入python filename.py直接执行,其可以通过vim等文本工具直接打开查看其源代码。

2) .pyc

.pyc是Python源码也就是.py文件编译后生成的文件,该文件为二进制文件,是一种byte code。其优点是加速有所提高,.pyc是一种跨平台二进制字节码,通过python虚拟机执行,但.pyc的内容和Python的版本是相关的,因此不同版本之间编译的.pyc文件不能执行的。

2)  .pyo

.pyo和.pyc是一样的,但是.pyo是优化编译后的程序,通过python -o filename.py即可将源程序编译成改类型文件。

文件类型总结:

为什么需要pyc文件?

首先,pyc可以隐藏掉源码文件,例如商业软件可能需要(此后需求可能越来越小,毕竟现在是开源时代)。当然,pyc文件也是可以反编译的,根据python源码中提供的opcode,根据pyc文件反编译出py文件源码,网上有这样的工具存在。不过大家可以通过自己修改python源代码中的opcode文件(学习如何修改opcode),重新编译python以防止被**。

生成pyc文件:

生成单个pyc文件

python这货提供了内置类库来实现py变pyc。这个模板为:py_compile使用方法:

import py_compile

py_compile.compile(‘file path/filename.py’)

上面是脚本的执行方式,命令执行方式为:python -m py_compile filname.py

编译成pyo比较简单,就不在多说,举个例子

python -O -m py_compile filename.py

说明: -m相当于脚本中的import,-O改成-OO则是删除相应的pyo文件。python -h可以查看帮助

批量生成pyc文件:

一般来说一个工程项目不会只有一个py文件,而是整个目录都需要编译成pyc,python提供了另一个模板:compileall使用方法:

import compileall

compileall.compile_dir(‘path’)

也可以直接使用命令编译整个目录下的文件:#python -m compileall /path/

python的变量:

a = 3
b = 4
c = a * b
print c

变量的作用:
简单总结:
为了存储程序运算过程中的中间结果,方便往后调用。
官方说明:
variables are used to store information to be referenced and manipulated(操作或修改) in a computer program. they also(并且还) provide a way of labeling data with a descriptive name, so our programs can be understood(理解) more clearly(更清晰) by the reader and ourselver(我们自己). It is helpful to think of variables as containers that hold information.their sole purpose is to label and store data in memory. this data can then by used throughout your program.

变量的命名规范
命名示例:(2种)
student_number:#官方推荐体,首字母不要大写
studentNumber:#驼峰体
命名规则:
1)具有描述性
2)变量名只能以下划线_、数字、字母组成,不可以有空格和特殊字符(@#¥%……等等)
3)不能以中文为变量名,不能以数字开头,但数字可以再中间和结尾。
4)保留字符不能被使用,例如print
常量:
不变的量,例如pie=3.1415926..
a = "3" #内存里开了空间存3
b = a #a去找了3,并没有在内存中开了一个a的存储
print a,a
a = "4" #它其实又开了新的内存,原来的3还是在b上面,b只是指向了原来a的值3,和a没有关系
print a #结果为4,但打印b还是3,

内存回收:
Python中内存有自己的内存回收机制,不需要手动写指令回收不用的变量赋值。
清除已定义的变量赋值:
有两种方式:
1、例如:age = 18
del age 就删除了age的值18
2、age =18
age = 20 #从18指向了20,原来的18就没了,内部内存回收机制过一会儿才会去清除它
运算符有:
算术运算符:
比较运算符:
赋值运算符:
num = 1 # 赋值
mum += 1 # 等价于 num = num+1,以下一样
还有、-=、*=、/=、//=、%=。双斜杠是整除、**=

逻辑运算符:
not、and、or
and:连接两个条件,两个条件都成立才为true,有一个不成立则为false。
条件1 and 条件2
例如:5>3 and 6>2
or:或,或者。只要有一个条件为真结果则为真,两个条件都不成立才为假
条件1 or 条件2, 真或假。
例如:5>3 or 6>2
not:不,其实就是取反的结果
not 5 > 3 == False
not 5 < 3 == True

小技巧:不知道他们的优先级的话,可以加小括号,则会优先算小括号里的东西
a>b and (c>b or (not f))
注:Python里不区分变量和常量,所有的量都是可变的量,为了区分常量和变量,常量是全部大写来表示。
数值和字符串编码
字符编码:
ASCII表原本只有100多个预留空位,但中文字符太多
于是中国另外开发了一张表,关联了ASCII表。支持中文的第一张表叫 GB2312,码位数是72*94个,有五个空位Python的文件类型、变量以及数值和字符串
Unicode:
万国码,支持所有国家和地区的编码
2**16 = 65535 = 存一个字符,统一占用2个字节,而ASCII使用一字节
UTF-8 = Unicode的扩展集,可变长的字符编码集。

Python2.x的默认编码为 ASCII码
Python3.x的默认编码为Unicode。直接支持中文
Unicode向下兼容gb2312和gbk

小窍门
print u'我爱中国' #u可以把指定字符为Unicode,当窗口无法修改为相同字符时,可以用这个兼容。