標籤:位置 ted 常量 lte pen href image 需要 time_t
1 函數1.1 字串格式化方法
Python中字串格式化輸出的幾種方法:
https://www.cnblogs.com/hongzejun/p/7670923.html
字串格式化另外一種方式format方式
#字串format()方法
#第一種
import datetime
msg = ‘歡迎光臨{name},今天的日期是{today}‘
msg = msg.format(name = ‘zhangsan‘,today= datetime.datetime.today())
print(msg)
#第二種
sql = ‘insert into my_user_value({id},{name},{sex},{addr})‘
tmp = sql.format(id=11,name=‘lisi‘,sex=‘男‘,addr=‘dfdsd‘)
print(tmp)
#第三種
sqla= ‘insert into {} value {}‘.format(‘aaa‘,‘bbb‘)
print(sqla)
#format_map 是對字典字串格式化
d = {‘name‘:‘小黑‘,‘sex‘:‘男‘}
words = ‘名字:{name},性別:{sex}‘.format_map(d)
print(words)
Python2的預設字元集編碼是ASCII碼,如果出現如下錯誤都是python2中報的:
可以在python2前面添加一個注釋-*- coding:utf-8 -*- 即可解決中文報錯問題;
python3預設是utf-8(utf-8是unicode編碼的子集),添加中文不會報錯。
name = ‘小黑‘
FILE_NAME = ‘goods.json‘ #變數名如果是大寫的表示常量,常量表示變數值一般都不會怎麼變化的
1.2 全域變數與局部變數
name = ‘小黑‘
FILE_NAME = ‘goods.json‘ #變數名如果是大寫的表示常量,常量表示變數值一般都不會怎麼變化的
#局部變數:在函數裡面定義的變數都是局部變數,除了函數之外就不能用了
#全域變數:在檔案最上面定義的這個變數就是全域變數
def hhh():
name = ‘小白‘
print(name)
hhh()
global name #在函數裡如果需要修改全域變數的值,則用global聲明一下,一般不建議使用全域變數,因為全域變數一直佔用記憶體
字典和list這種可變變數,不需要用golbal來聲明,就可以直接修改了
1.3 可變參數
可變參數(也稱為參數組):不是必填的,沒有限制參數個數,一般參數比較多的時候可以使用此方法實現;
在參數前面添加一個*號:
def send_mail(*email):
print(‘email..‘,email)
send_mail(‘[email protected]‘)
send_mail(‘[email protected]‘,‘[email protected]‘,‘[email protected]‘)
send_mail()
樣本:
def run(name,*args):
print(name)
print(‘args:‘,args)
run(‘zhangsan‘,‘22‘,‘beijing‘,‘天通苑‘)
將zhangsan傳給了name,其他的字串都傳給了args
函數return多個值時,預設放在一個元組中,也可以用多個變數接收return的值
def nhy():
name = ‘niuhanyang‘
sex = ‘男‘
age= 18
return name,sex,age
res = nhy() #預設存放在一個元組中
print(res)
a,b,c = nhy() #也可以使用多個變數接收return的值
print(a,b,c)
#位置參數(必填參數),預設值參數(不必填),可變參數(不必填,不限制參數個數)
#位置參數
def op_db(ip,port,db,user,passwd,sql):
print(‘串連mysql操作資料庫‘)
pass
op_db(‘192.168.1.1‘,3306,‘aaa‘,‘root‘,‘123456‘,‘select‘)
op_db(‘192.168.1.1‘,‘3306‘,user=‘root‘,passwd=‘123456‘,db=‘jzx‘,sql=‘insert‘)
#關鍵字參數:在參數前面添加兩個**號,不必填,不限制參數個數,傳的參數放在了字典裡面
print(‘------關鍵字參數1------‘)
def my(**info):
print(info)
my(name=‘haha‘,sex=‘男‘,age=18)
my()
my(type=‘car‘,a=1,c=1)
print(‘------必填參數+關鍵字參數2------‘)
def my(name,**info):
print(name)
print(info)
my(‘xiaohei‘,a=‘aaaa‘,b=‘bbbbb‘) #兩個**號關鍵字參數必須的指定誰等於誰,不指定會報錯
print(‘------多種參數1------‘)
#如果多種類型的參數一起使用,則必須是按位置參數->預設參數->可變參數->關鍵字參數的順序填寫。
def my(name,sex=‘男‘,*args,**kwargs):
print(name)
print(sex)
print(args)
print(kwargs)
my(‘xiaohei‘)
my(‘xiaohei‘,‘hhh‘,‘args‘,‘args2‘,k=‘1‘,k2=‘2‘)
1.4 遞迴
遞迴,即函數自己調用自己,遞迴最多迴圈999次。用遞迴的話,必須得有一個明確的結束條件;用遞迴能實現的也可以使用迴圈實現。
def my2():
num = input(‘輸入一個數字:‘)
num = int(num)
if num%2 !=0:
print(‘請輸入偶數‘)
return my2()
my2()
2 內建函數
Python內建函數:
Print
input
int
dict
set
list
str
len
open
tuple
type
max #取最大值
dir #看這個對象裡面有哪些方法
msg =‘hello‘
print(dir(msg))
sorted #排序
print(chr(97)) #列印數字對應的ascii
print(ord(‘b’)) #列印字串對應的ascii
round() #保留幾位小數
eval #python執行代碼
exec #執行python代碼
enumerate #枚舉方法
#同時擷取下標以及元素的方法:
#方法一
stus = [‘張三‘,‘李四‘,‘王五‘]
for i in range(len(stus)):
print(i,stus[i])
#方法二:enumerate枚舉方法:
for index,s in enumerate(stus):
print(index,s)
指定下表從指定的數值開始,不指定預設從0開始:
Zip #壓縮
stus = [‘張三‘,‘李四‘,‘王五‘]
sex = [‘男‘,‘女‘,‘女‘]
age = [30,20,22,21]
for name,se,ag inzip(stus,sex,age): #zip將多個list壓縮到一起
print(name,se,ag)
如果list元素不一樣多,則迴圈最少的。
Map #迴圈幫你調用函數
Filter
3 模組
一個python檔案就是一個模組
3.1 標準模組
標準模組:python內建的模組就是標準模組,也就是可以直接import進來的標準模組,如:
import json
import random
import datetime
import time
import os
3.2 第三方模組
第三方模組:別人寫好的模組,你安裝完之後就能用
3.2.1 pip安裝
第三方模組需要自己安裝,使用pip源方法進行安裝
pip install +第三方模組名
pip install pymysql
如果pip命令不存在的,則直接到python中安裝目錄(D:\Miniconda3\Scripts)的pip添加到環境變數中去;
如果pip命令有,但是還是不能安裝,則用where pip查看下面是否是有多個pip導致的,將非python下的pip重新命名即可解決;
如果裝了多個版本的python,則下載第三方庫的方法為:
python2 –m pip install xxx
python3 –m pip install xxx
3.2.2 手動安裝
先從python官方網站(https://pypi.org)上搜尋需要安裝的模組:
.whl尾碼結尾的檔案安裝方法(使用絕對路徑方法進行安裝):
pip installD:\pythonbao\redis-2.10.6-py2.py3-none-any.whl
.tar.gz壓縮包的檔案安裝方法:
先解壓檔案,進入到解壓的檔案目錄下,在地址欄上輸入cmd進入到該路徑下(或者在該解壓檔案夾下按住shift鍵,右鍵選擇“在此處開啟命令列視窗”),在開啟的視窗下執行python setup.py install。
Pycharm安裝第三方模組的方法(這個不是太好用):
3.3 自己寫的模組
自己寫的:自己寫的python檔案
3.4 常用模組3.4.1 os模組
import os
print(os.getcwd()) #取當前的路徑
os.mkdir(‘spz‘) #在目前的目錄下建立一個檔案夾
os.mkdir(‘d:\\aaa‘) #在絕對路徑下建立檔案夾
os.makedirs(‘spz2‘) #在目前的目錄下建立一個檔案夾,
os.makedirs(‘stu\\laowang‘) #父目錄不存在時,會自動幫忙建立父目錄,而mkdir不會;
print(os.listdir(‘D:\\pythonscript\\day5‘)) #擷取某個路徑下的所有檔案
# for i in range(10):
# os.mkdir(‘D:\\pythonscript\\day5\\test%s‘%i)
#把末尾是偶數的檔案夾中,建立一個a.txt檔案,裡面隨便寫點東西
#思路如下:
#1、擷取到這個目錄下所有的檔案夾,os.listdir(‘‘)
#2、判斷檔案夾的名字最後一位是不是偶數
#3、如果是偶數的,在這個檔案裡面f = open(a.txt) f.write(‘xxxx‘)
for dir in os.listdir(‘D:\\pythonscript\\day5‘):
if dir[-1].isdigit():
if int(dir[-1])%2==0:
abs_path = r‘D:\\pythonscript\\day5\\%s\\a.txt‘%dir
with open(abs_path,‘w‘) as fw:
fw.write(‘test‘)
#拼接路徑,會自動識別路徑分隔字元
print(os.path.join(‘day5‘,‘test0‘,‘a.txt‘))
print(os.sep) #顯示當前系統檔案路徑分隔字元
print(os.path.dirname(‘D:\\pythonsript\\day5\\test0\\a.txt‘)) #擷取父目錄的路徑
os.path.getsize() #擷取檔案大小的
3.4.2 time模組
import time
#時間戳記,從unix元年開始到現在過的秒數
#格式化號的時間2018-07-01
print(time.time()) #擷取目前時間戳
print(time.strftime(‘%Y-%m-%d %H:%M:%S‘)) #擷取格式化好的時間
print(time.strftime(‘%y%m%d‘)) #%Y和%y有點區別
#時間戳記和格式化時間轉換
#時間元組
print(time.gmtime()) #把時間戳記轉成時間元組,如果不傳時間戳記,那麼取的是標準時區的時間
print(time.localtime()) #取當地時區的時間元組
print(time.localtime(1530436244-864000))
print(time.asctime(time.localtime(1530436244-864000)))
print(time.strftime(‘%Y%m%d%H%M%S‘,time.localtime(1530436244-864000)))
#時間戳記轉格式化好的時間
#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(1530436244,‘%Y%m%d‘)
res2 = timestampToStr()
print(res,res2)
#格式化好的時間轉時間戳記
#1、先把格式化好的時間轉成時間元組
#2、再把時間元組轉化成時間戳記
time1 = time.strptime(‘20180701‘,‘%Y%m%d‘)
print(time.mktime(time1))
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())
t1 = strToTimestamp(‘20180702020202‘)
t2 = strToTimestamp()
print(t1,t2)
python基礎學習4-函數、內建函數、os模組、time模組