重学python

语言特性

首先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
        self.name = name
        self.counter = counter
    def run(self):                   #把要执行的代码写到run函数里面 线程在创建后会直接运行run函数 
        print "Starting " + self.name
        print_time(self.name, self.counter, 5)
        print "Exiting " + self.name

模块话

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

参考:https://blog.csdn.net/Bit_Coders/article/details/119318000

猜你喜欢

转载自blog.csdn.net/lin819747263/article/details/128762655
今日推荐