语言特性
首先python是一门易学的语言有着丰富的第三方库,在爬虫,自动化测试,数据分析,AI等领域有着广泛的应用
数据类型
pyhton标准类型
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
python支持四种不同的数据类型
- int(有符号整型)
- long(长整型,也可以代表八进制和十六进制)
- float(浮点型)
- complex(复数)
文本类型: | str |
---|---|
数值类型: | int , float , complex |
序列类型: | list , tuple , range |
映射类型: | dict |
集合类型: | set , frozenset |
布尔类型: | bool |
二进制类型: | bytes , bytearray , memoryview |
变量声明
x = "Hello World"
x = 29
x = 29.5
x = 1j
x = ["apple", "banana", "cherry"]
x = ("apple", "banana", "cherry")
x = range(6)
x = {"name" : "Bill", "age" : 63}
x = {"apple", "banana", "cherry"}
x = True
条件与循环
num = 80
if num > 80:
print("优")
elif num > 60 and num < 80:
print("良")
else
print("差")
if ( var == 100 ) : print "变量 var 的值为100"
循环
num = 0
while(num < 10):
print(i)
num++
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二个实例
print ('当前水果: %s'% fruit)
常用的数据容器
//list
x = ["apple", "banana", "cherry"]
//元组
x = ("apple", "banana", "cherry")
x = range(6)
//字典
x = {"name" : "Bill", "age" : 63}
函数声明
def add(a, b):
return a+b
//箭头函数声明
sum = lambda arg1, arg2: arg1 + arg2
#可写函数说明
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return
面向对象
class Employee:
'所有员工的基类'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
"创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
继承
class Parent: # 定义父类
parentAttr = 100
def __init__(self):
print "调用父类构造函数"
def parentMethod(self):
print '调用父类方法'
def setAttr(self, attr):
Parent.parentAttr = attr
def getAttr(self):
print "父类属性 :", Parent.parentAttr
class Child(Parent): # 定义子类
def __init__(self):
print "调用子类构造方法"
def childMethod(self):
print '调用子类方法'
c = Child() # 实例化子类
c.childMethod() # 调用子类的方法
c.parentMethod() # 调用父类方法
c.setAttr(200) # 再次调用父类的方法 - 设置属性值
c.getAttr() # 再次调用父类的方法 - 获取属性值
异常处理
try:
正常逻辑
except Exception,err:
触发自定义异常
else:
其余代码
try:
<语句>
finally:
<语句> #退出try时总会执行
raise
并发
# 为线程定义一个函数
def print_time( threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print "%s: %s" % ( threadName, time.ctime(time.time()) )
# 创建两个线程
try:
thread.start_new_thread( print_time, ("Thread-1", 2, ) )
thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print "Error: unable to start thread"
while 1:
pass
class myThread (threading.Thread): #继承父类threading.Thread
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
= name
self.counter = counter
def run(self): #把要执行的代码写到run函数里面 线程在创建后会直接运行run函数
print "Starting " +
print_time(, self.counter, 5)
print "Exiting " +
模块话
Python Modules模块
Modules模块是包含 Python 定义和语句的文件。以.py为后缀的文件名就是模块名称。
在模块内,模块的名称可以用全局变量 __name__
表示(字符串)。
# Fibonacci numbers module
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a+b
return result
这里fibo.py就是一个模块,fib、fib2是fibo模块中的函数。
导入模块
导入模块有三种导入方式
1.导入整个模块
#import module_name
import fibo
2.导入模块特定的函数
#from module_name import function_name
from fibo import fib, fib2
fib(10)
3.导入模块所有函数
#from module_name import *
from fibo import *
fib(20)
你也可以给一个别名
# import module as m
import numpy as np
a = np.arange(100)
单独运行模块
如果我们想单独测试下模块,可以在模块中添加以下代码,就可以既用作脚本,也可用作可导入模块:
if __name__ == "__main__":
import sys
fib(int(sys.argv[1]))
Python Packages包
Packages包可以理解为一组模块的容器,并用Package.Module的方式来构建命名空间
sound/ Top-level package
__init__.py Initialize the sound package
formats/ Subpackage for file format conversions
__init__.py
wavread.py
wavwrite.py
...
effects/ Subpackage for sound effects
__init__.py
echo.py
...
filters/ Subpackage for filters
__init__.py
equalizer.py
...
-
init.py 必须有这个文件,才能使 Python 将包含该文件的目录视为包(Package)。init.py可以是一个空文件,也可以执行包的初始化代码或设置__all__变量。
-
formats/ 、effects/ 、filters/ 是次一级的子包(Subpackage),每个子包中也有__init__.py 文件。
-
echo.py等文件是子包中的模块(Module),模块中可能包含函数、类或变量
引用包(Package)中的模块
from sound.effects import echo
echo.echofilter(input, output, delay=0.7, atten=4)
引用包(Package)中子模块的函数或变量
from sound.effects.echo import echofilter
echofilter(input, output, delay=0.7, atten=4)
利用相对路径引用包和模块
from . import echo
from .. import formats
from ..filters import equalizer
python常用库
数据分析:Numpy, pandas
web:django
爬虫:urllib 、urllib2 、requests