python学习笔记一——初识
系统环境
[root@localhost day1]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
python版本
[root@localhost day1]# python --version
Python 3.6.3
注意:python2和python3的区别
1. 第一个python程序
python的源代码文件是以".py"为后缀。下面打印字符串"hello world"。
#!/usr/bin/env pythonif __name__=="__main__": #相当于C语言中的main()函数,是python程序的入口
print("hello world")
[root@localhost day1]# python 1.py
hello world
注意:关于if __name__=="__main__"的解释如下:
一个.py文件,如果是自身在运行,那么他的__name__值就是"__main__";
如果它是被别的程序导入的(作为一个模块),比如:
import re
那么,他的__name__就不是"__main__"了。
所以,在.py文件中使用这个条件语句,可以使这个条件语句块中的命令只在它独立运行时才执行
2. python必须知道的基础语法
2.1 python的文件类型
python文件类型分为3种,分别是源代码、字节代码、优化代码。这些代码可以直接运行,不需要进行编译或者链接。这正是python这么语言的特性。python的文件通过python解释器解释运行,windows有python.exe与pythonw.exe,一般安装在路径C:\python33中,当然也可以改变它的路径,只要保证环境变量设置正确即可。在Linux系统中,python解释器被安装在目标及其的/usr/local/bin/python目录下,将/usr/local/bin路径放进shell的搜索路径中,即可通过python命令在shell中调用。例:python xxx.py
2.1.1 源代码
python源代码的扩展名以py结尾,可在控制台下运行.python语言写的程序不需要编译成二进制代码,可以直接运行源代码。pyw是windows下开发图像用户接口的源文件,作为桌面应用程序的后缀名。这种文件是专门用于开发图形界面的,由pythonw.exe解释运行。以py和pyw为后缀名的文件可以用文本工具打开,并修改文件的内容。
2.1.2 字节代码
python源文件编译后生成pyc后缀的文件,pyc是编译过的字节文件,这种文件不能使用文本编辑工具打开或修改。pyc文件是与平台无关的,因此python的程序可以运行在windows、Unix、linux等操作系统上。py文件直接运行后即可得到pyc类型的文件,或通过脚本生成改类型的文件。下面这段脚本可以把hello.py编译为hello.pyc。
#!/usr/bin/env pythonimport py_compile
py_compile.compile("hello.py")
[root@localhost day1]# python hello.py[root@localhost day1]# ls
hello.py hello.pyc
2.1.3 优化代码
扩展名为pyo的文件是优化过的源文件,pyo类型的文件需要用命令行工具生成。pyo文件也不能使用文本编辑工具打开或者修改。下面把hello.py编译成hello.pyo
#!/usr/bin/env pythonimport py_compile
py_compile.compile("hello.py")
[root@localhost day1]# python -O hello.py[root@localhost day1]# ls
hello.py hello.pyo
参数“-O”表示生成优化代码。
2.2 python的编码规范
1. 变量名、包名、模块名
变量名、包名、模块名通常采用小写,可使用下划线。
#Filename: ruleModule.py #声明模块的名称,模块名采用小写。也可以不指定模块名,以py后缀的文件就是一个模块,模块名就是文件名_rule = "rule information" #定义一个全局变量_rule。
2. 类名、对象名
类名的首字母采用大写,对象名采用小写。类的属性和方法以对象作为前缀。类的私有变量、私有方法以两个下划线作为前缀。下面这段代码演示了类的定义和实例化的规范写法。
#!/usr/bin/env pythonclass Student: #类名大写
__name = "" #私有实例变量前必须有两个下划线
def __init__(self,name):
self.__name = name #self相当于java中的this
def getName(self): #方法名首字母小写,其后每个单词的首字母大写
return self.__name
if __name__ == "__main__":
student = Student("borphi") #对象名小写
print(student.getName())
[root@localhost day1]# python hello.pyborphi
3. 函数名
函数名通常采用小写,并用下划线或单词首字母大写增加名称的可读性,导入的函数以模块名作为前缀。下例中,为了演示导入函数前缀写法,使用了生产随机数的模块random,改模块有一个函数randrange()。该函数可以根据给定的数字范围生成随机数。randrange()声明如下:
randrange(start , stop[ , step])
参数step表示从start开始往后的步数。生成的随机数在[start , stop-1]的范围内。如[1,20] 取值范围是1--19。
#!/usr/bin/env pythonimport random #导入random模块
def compareNum(num1,num2): #定义一个函数compareNum(),两个参数
if(num1 > num2):
return 1
elif(num1 == num2):
return 0
else:
return -1
num1 = random.randrange(1,9)
num2 = random.randrange(1,9)
print("num1 =",num1)
print("num2 =",num2)
print(compareNum(num1, num2)) #调用函数传入两个随机参数
[root@Dannyserver danny]# python 1.pynum1 = 3
num2 = 5
-1
2.2.2 代码缩进与冒号
代码缩进是指通过在每行代码输入空格或制表符的方式,表示每行代码之间的层次关系。python独有的方式,通过缩进分隔代码块。python对代码的缩进要求非常严格。如果不采用代码缩进风格,将会抛出一个IndentationError的错误。
2.2.3 模块的导入规范
在python中,如果需要在程序中调用标准库或其他第三方库的类,需要先使用import或from..import...语句导入相关的模块。
1. import语句
例:使用import语句导入sys模块,并打印相关内容。
#!/usr/bin/env pythonimport sys #导入sys模块,sys模块是处理系统环境的函数的集合
print(sys.path) #输出python环境下的查找路径的集合,python默认会查找sys.path返回的目录列表
print(sys.argv) #sys.argv是存储输入参数的列表。默认情况下,argv自带的参数是文件名
[root@localhost danny]# python import_sys.py['/home/danny', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk',
'/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', '/usr/lib64/python2.6/site-packages',
'/usr/lib64/python2.6/site-packages/gst-0.10', '/usr/lib64/python2.6/site-packages/gtk-2.0', '/usr/lib64/python2.6/site-packages/webkit-1.0',
'/usr/lib/python2.6/site-packages']['import_sys.py']
2. from...import...语句
使用from...import...语句导入与使用import语句导入的区别是前者只导入模块中的一部分内容,并在当前的命名空间中创建导入对象的引用;而后者在当前程序的命名空间中创建导入模块的引用,从而可以使用“sys.path”的方式调用sys模块的内容。
from sys import pathfrom sys import argv
print(path) #可以直接调用打印path列表的内容,没有模块名的限定。
print(argv) #但这种写法不太规范,如果程序比较复杂,导入了很多模块,还是用sys.path可以明确path和argv来自哪儿个模块
2.2.4 使用空行分隔代码
函数之间或类之间用空行分隔,表示一段新的代码的开。便于阅读。例:
#!/usr/bin/env python#coding:utf8 #中文编码,是程序能识别中文
class A:
def funX(self):
print("funY()")
#空行
def funY(self):
print("funY()")
#空行
if __name__ == "__main__":
a=A()
a.funX()
a.funY()
print("哈哈哈")
例题:编写一个比较两个数字大小的函数。
#!/usr/bin/env python#coding:utf8
def compareNum(num1,num2):
if(num1>num2):
return str(num1)+">"+str(num2)
elif(num1<num2):
return str(num1)+"<"+str(num2)
elif(num1==num2):
return str(num1)+"="+str(num2)
else:
return "呵呵"
num1=1
num2=2
print(compareNum(num1,num2))
num1=2
num2=1
print(compareNum(num1,num2))
num1=2
num2=2
print(compareNum(num1,num2))
[root@localhost danny]# python def_1.py1<2
2>1
2=2
本段代码中的str()函数实现了数字类型到字符串类型的转换。
2.2.5 语句的分隔
在C、java等语言中标示语句结束的标识是分号。python也支持分号,同样可以用分号作为一行语句的结束标识。但在python中分号的作用没C、java中那么重要了,python中的分号可以省略,主要通过换行来识别语句的结束。例如:以下两行代码是等价的。
print("hello world!")print("hello world!");
python同样支持多行写一条语句,python使用"\"作为换行符,在实际应用中,一条语句卸载多行也是很常见的。例如,把SQL语句作为参数传递给函数,由于SQL非常长,因此需要换行书写。
#写法一sql = "select id,name" \
from dept \
where name = 'A'"
print (sql)
# 写法二
sql = "select id,name" \
"from dept" \
"where name = 'A'"
print (sql)
2.3 变量和常量
2.3.1 变量的赋值
python中的变量不需要声明,变量的赋值操作即是变量的声明和定义的过程。
python还支持对一些变量同时赋值的操作,例如:
a = (1,2,3)(x,y,z) = a
print ("x=",x)
print ("y=",y)
print ("z=",z)
[root@Dannyserver danny]# python 1.pyx= 1
y= 2
z= 3
提示:注意python版本问题,本文所有实验都是在python3上做的。
2.3.2 局部变量
局部变量的作用范围只在其被创建的函数内有效。
#!/usr/bin/env pythondef fun():
local = 1 #局部变量,只在函数内生效
print(local)
fun() #调用函数
2.3.3 全局变量
全局变量是能够被不同的函数、类或文件共享的变量,在函数之外定义的变量都可以称为全局变量。全局变量可以被文件内部的任何函数和外部文件访问。
全局变量通常在文件的开始处定义。下面定义了两个全局变量_a , _b 和两个函数add() , sub(),这两个函数将调用全局变量执行加减法运算。
_a=1_b=2
def add():
global _a #用global调用全局变量,如果修改值,则全文局变量值都会改变
_a=3
return "_a + _b =",_a+_b
def sub():
global _b
_b = 4
return "_a -_b =",_a-_b
print(add())
print(sub())
print(_a)
print(_b)
[root@Dannyserver danny]# python 1.py('_a + _b =', 5)
('_a -_b =', -1)
3 #通过调用global调用修改,导致全局变量已经改变
4
提示:应该尽量避免使用全局变量。因为不同的模块都可以自由访问全局变量。可能会发生一方修改导致全部文件数据都更改。
以上是 python学习笔记一——初识 的全部内容, 来源链接: utcz.com/z/386768.html