python基礎學習4-函數、內建函數、os模組、time模組

來源:互聯網
上載者:User

標籤:位置   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模組

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.