1. 程式人生 > >函數、模塊

函數、模塊

轉換成 line orm 限制 元組 date .tar.gz enum format

一.函數

1.變量

#變量名全部為大寫時,就是一個常量
FILE_NAME=‘gdgd‘ #常量的值是不會變的

name=‘小黑‘   #全局變量
# 局部變量
# 在函數裏邊定義的變量都是局部變量,出了函數之後就不能用了
# 全局變量
# 在文件最上邊定義的這個變量,就是全局變量

def hh():
global name #此處為局部變量。用global聲明一下,可以將全局變量修改,一般不用,影響內存;字典和list這種可變的變量,不需要global來聲明,就可以直接改了
name=‘小白‘
print(name)
hh()    #結果是小白
print(name) #結果是小白
******************************************************************************
2.函數傳參
# 可變參數(參數組)   參數非必填,參數個數沒有限制,最後的結果存放在元組當中
def send_mail(*email):
print(email)
send_mail(‘fsfsfs‘)
send_mail(‘fdfdfd‘,‘dsdssds‘,‘rrerer‘)
send_mail()

def run(name,age=28,*args):
print(name)
print(age)   
print(‘args..‘,args)
run(‘aa‘,25,‘北京‘,‘fafsa‘)
結果:
aa
25
args..北京 fafsa

def st():
name=‘abc‘
sex=‘男‘
age=18
return name,age,sex #return多個值時,將所有返回值放到一個數組中
res=st()
print(res) (‘abc’,‘男’,18)

# 關鍵字參數
def my(**info): #非必填,沒有限制參數個數,將結果放到一個字典裏邊
print(info)
my(name=‘fadada‘,sex=‘男‘,age=18)
my()
my(type=‘car‘,a=1,c=1)


#位置參數(必填參數),默認值參數(不必填),可變參數(不必填的,不限制參數個數)
def op_db(ip,port,db,user,passwd,sql):
print(‘連接mysql操作數據庫‘)
pass

op_db(‘192.1681.12‘,‘xxx‘,3306,‘sdf‘,‘sdf‘,‘sdf‘)
op_db(‘192.169.1.12‘,3306,user=‘root‘,passwd=‘12345‘,db=‘jxz‘,sql=‘select‘)

3.遞歸:就是函數自己調用自己,類似於循環,但是遞歸有次數限制,最大遞歸次數為999次,超過了這個限制就會報錯,所有用遞歸的話,必須要有一個明確的結束條件


4.列表推導式,列表生成式
res=[12,45,88,2,3,6]
res=[str(i).zfill(2) for i in res] 對res列表進行遍歷,同時對遍歷的結果進行處理

5.內置函數:
print(all([1,2,3,4]))#判斷可叠代的對象裏面的值是否都為真 print(any([0,1,2,3,4]))#判斷可叠代的對象裏面的值是否有一個為真 print(bin(10))#十進制轉二進制 print(bool(‘s‘))#把一個對象轉換成布爾類型 print(bytearray(‘abcde‘,encoding=‘utf-8‘))#把字符串變成一個可修改的bytes print(callable(‘aa‘))#判斷傳入的對象是否可調用 print(chr(10))#打印數字對應的ascii print(ord(‘b‘))#打印字符串對應的ascii碼 print(dict(a=1,b=2))#轉換字典 print(dir(1))#打印傳入對象的可調用方法 print(eval(‘[]‘))#執行python代碼,只能執行簡單的,定義數據類型和運算 print(exec(‘def a():pass‘))#執行python代碼 print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把後面的叠代對象根據前面的方法篩選 print(map(lambda x:x>5,[1,2,3,4,5,6])) print(frozenset({1,2,3,3}))#定義一個不可修改的集合 print(globals())#返回程序內所有的變量,返回的是一個字典 print(locals())#返回局部變量 print(hash(‘aaa‘))#把一個字符串哈希成一個數字 print(hex(111))#數字轉成16進制 print(max(111,12))#取最大值 print(oct(111))#把數字轉換成8進制 print(round(11.11,2))#取幾位小數 print(sorted([2,31,34,6,1,23,4]))#排序 dic={1:2,3:4,5:6,7:8} print(sorted(dic.items()))#按照字典的key排序 print(sorted(dic.items(),key=lambda x:x[1]))#按照字典的value排序 __import__(‘decorator‘)#導入一個模塊  rang(1,1000,2) 從1到1000,步長為2

stus=[‘放到‘,‘方式‘,‘如風達‘,‘發順豐‘]
stus=[‘發順豐‘,‘茍富貴‘,‘第三方‘,‘茍富貴‘]
for index,s in enumerate(stus):
print(index,s) #同時循環取列表中的內容和下標,同時枚舉函數不僅僅適用於list,字符串,數字,漢字都可以

sex=[‘男‘,‘男‘,‘女‘,‘女‘]
age=[1,2,3,6]
for name,se,ag in zip(stus,sex,age): #zip函數將多個list壓縮到一起,list個數不限,當list長度不一時,以短的為準
print(name,se,ag)

二、模塊

1.模塊的概念
 一個python文件就是一個模塊
(1).標準模塊
python自帶的模塊就是標準模塊,也就是可以直接import進來的就是標準模塊
(2).第三方模塊
別人寫好的模塊,安裝完成後就能用
    安裝方式:
pip源安裝
pip install pymysql
pip命令不存在的,把python安裝目錄下的scrips加入環境變量
python2 -m pip install xxxx
python3 -m pip install xxxx
手動安裝
.whl
1、先從python官網上下載安裝文件
2、pip install c://xxx/xxxx/xxx.whl
.tar.gz
1、先從python官網上下載安裝文件
2、解壓
3、在命令行裏面進入到解壓之後的文件夾中
4、python setup.py install

(3).自己寫的python文件

2.常用模塊

os模塊
import os
print(os.getcwd())#取當前工作目錄 os.chmod("/usr/local",7)#給文件/目錄加權限 print(os.chdir("../"))#更改當前目錄 print(os.curdir)#當前目錄 print(os.pardir)#父目錄 print(os.makedirs("/usr/hehe/hehe1"))#遞歸創建文件夾,父目錄不存在時創建父目錄 print(os.removedirs("/usr/hehe/hehe1"))#遞歸刪除空目錄 print(os.mkdir("test1"))#創建文件夾,父目錄不存在時,會報錯 print(os.rmdir("test1"))#刪除指定的文件夾 print(os.remove("test"))#刪除文件 print(os.listdir(‘.‘))#列出一個目錄下的所有文件 os.rename("test","test1")#重命名 print(os.stat("len_os.py"))#獲取文件信息 print(os.sep)#當前操作系統的路徑分隔符 print(os.linesep)#當前操作系統的換行符 print(os.pathsep)#當前系統的環境變量中每個路徑的分隔符,linux是:,windows是; print(os.environ)#當前系統的環境變量 print(os.name)#當前系統名稱 print(os.path.abspath(__file__))#獲取絕對路徑 print(os.path.split("/usr/hehe/hehe.txt"))#分割路徑和文件名 print(os.path.dirname("/usr/local"))#獲取父目錄 print(os.path.basename("/usr/local"))#獲取最後一級,如果是文件顯示文件名,如果是目錄顯示目錄名 print(os.path.exists("/usr/local"))#目錄/文件是否存在 print(os.path.isabs("."))#判斷是否是絕對路徑 print(os.path.isfile("/usr/local"))#判斷是否是一個文件 print(os.path.isdir("/usr/local"))#是否是一個路徑 print(os.path.join("/root",‘hehe‘,‘a.sql‘))#拼接成一個路徑,自動識別系統,寫出正確的路徑分隔符 print(os.path.getatime("len_os.py"))#輸出最近訪問時間 print(os.path.getmtime("len_os.py"))#輸出最近訪問時間
 os.path.getsize(‘E:\\jch\\tett0\\a.txt‘)  #獲取文件大小的

random模塊
  import random,string    
print(random.random())#隨機浮點數,默認取0-1,不能指定範圍 print(random.randint(1,20))#隨機整數 print(random.randrange(1,20))#隨機產生一個range print(random.choice(‘x23serw4‘))#隨機取一個元素 print(random.sample(‘hello‘,2))#從序列中隨機取幾個元素 print(random.uniform(1,9))#隨機取浮點數,可以指定範圍 x = [1,2,3,4,6,7] random.shuffle(x)#洗牌,打亂順序,會改變原list的值 print(x) print(string.ascii_letters+string.digits)#所有的數字和字母
time模塊

import datetime,time
print(time.timezone)#和標準時間相差的時間,單位是s print(time.time())#獲取當前時間戳 print(time.sleep(1))#休息幾s print(time.gmtime())#把時間戳轉換成時間元組,如果不傳的話,默認取標準時區的時間戳 print(time.localtime())#把時間戳轉換成時間元組,如果不傳的話,默認取當前時區的時間戳 print(time.mktime(time.localtime()))#把時間元組轉換成時間戳 print(time.strftime("%y%m%d %H%M%S"))#將時間元組轉換成格式化輸出的字符串 print(time.strptime("20160204 191919","%Y%m%d %H%M%S"))#將格式化的時間轉換成時間元組 print(time.struct_time)#時間元組 print(time.asctime())#時間元轉換成格式化時間 print(time.ctime())#時間戳轉換成格式化時間 print(datetime.datetime.now())#當然時間格式化輸出 print(datetime.datetime.now()+datetime.timedelta(3))#3天後的時間 print(datetime.datetime.now()+datetime.timedelta(-3))#3天前的時間 時間戳:從liunx元年到現在過的秒數 格式化的時間如:2018-01-07 時間元組:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=14, tm_min=23, tm_sec=53, tm_wday=2, tm_yday=185, tm_isdst=0) 時間戳和格式化的時間不能直接互轉,必須通過時間元組為中介來互轉 時間戳和格式化好的時間互轉,方法固定,以後可以直接拿來用
# 1.時間戳轉格式話好的時間
# 1.首先要把時間戳轉化為時間元組
# 2.再把時間元組轉化為格式好的時間
def timestampToStr(timestamp=None,format=‘%Y-%m-%d %H:%M:%S‘):
if timestamp:
time_tuple = time.localtime(timestamp) # 轉成時間元組
return time.strftime(format,time_tuple) #把時間元組轉化為格式話好的時間
return time.strftime(format)
res = timestampToStr(2234123120,‘%Y%m%d‘)
print(timestampToStr())

# 2.格式化好的時間,轉時間戳
# 1.先把格式化好的時間,轉化成時間元組
# 2.再把時間元組轉化成時間戳
def strToTimestamp(format_time=None,format=‘%Y%m%d%H%M%S‘):
if format_time:
time_tuple = time.strptime(format_time, format) #把格式化好的時間,轉化成時間元組
return int(time.mktime(time_tuple))
return int(time.time())


函數、模塊