python学习笔记一——初识

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 python

if __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 python

import 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 python

import 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 python

class 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.py 

borphi

  3. 函数名

   函数名通常采用小写,并用下划线或单词首字母大写增加名称的可读性,导入的函数以模块名作为前缀。下例中,为了演示导入函数前缀写法,使用了生产随机数的模块random,改模块有一个函数randrange()。该函数可以根据给定的数字范围生成随机数。randrange()声明如下:

  randrange(start , stop[ , step])

  参数step表示从start开始往后的步数。生成的随机数在[start , stop-1]的范围内。如[1,20] 取值范围是1--19。

#!/usr/bin/env python

import 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.py 

num1 = 3

num2 = 5

-1

   2.2.2 代码缩进与冒号

  代码缩进是指通过在每行代码输入空格或制表符的方式,表示每行代码之间的层次关系。python独有的方式,通过缩进分隔代码块。python对代码的缩进要求非常严格。如果不采用代码缩进风格,将会抛出一个IndentationError的错误。

   

  2.2.3 模块的导入规范

   在python中,如果需要在程序中调用标准库或其他第三方库的类,需要先使用import或from..import...语句导入相关的模块。

  1. import语句

  例:使用import语句导入sys模块,并打印相关内容。 

#!/usr/bin/env python

import 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 path

from 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.py 

1<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.py 

x= 1

y= 2

z= 3

提示:注意python版本问题,本文所有实验都是在python3上做的。

   2.3.2 局部变量

  局部变量的作用范围只在其被创建的函数内有效。

#!/usr/bin/env python

def 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

回到顶部