1. 程式人生 > >python基礎(局部、全局變量、函數、文件的操作)

python基礎(局部、全局變量、函數、文件的操作)

不定 匿名函數 glob ssp 轉化 數字 python 大於 關閉

python基礎(局部、全局變量、函數、文件的操作)

局部變量 可以用返回值
全局變量
如果一個函數有返回值,在沒有調用函數之前 用這個變量保存的話,沒有任何的意義
global
如果在局部變量中加入global 用來對一個全局變量的聲明
wendu = 0
def test1():
global wendu
wendu = 33

def test2():
print("%d"%wendu)
#test1()
test2() 結果為0

wendu = 0
def test1():
global wendu
wendu = 33

def test2():
print("%d"%wendu)
test1()

test2() 結果為33

全局變量可以在函數前面也可以在後面 不能在調用之後
局部變量 比 全局變量高
在函數中,如果對一個和全局變量名相同的變量 進行賦值的時候,默認是定義一個變量
只不過這個變量名字和全局白能量名字相同罷了
可以 加上g_

如果列表字典當作全局變量 不用添加global聲明 可以直接當作全局變量來用

缺省參數 可以多個 只能放在後面
def test(a,b=100) 可以傳,也可以不傳 不傳用默認,傳了用傳入的
def test(a,b=100)缺省參數
? ? return a + b
b = test(10)
print(b)
缺省函數多個時候 可以制定給誰傳
eg:def test(a,b=11,c=33):

? ?test(11,12) 12會給b
? ?test(11,c =12) 實參 12給 傳入的時候叫做命名參數 c為命名參數

+名子 args 官方
不定長參數
形參和實參 形參的個數大於實參的個數都存在不定長函數裏面
一個元祖裏面只有一個元素 要在後面加一個,
拆元組
拆包
**kwargs
拆×××

id(內存空間的地址)引用
a = 100
b =a 公用一個地址

c語言中 不一樣 a = 100 b = 100 兩個地址

可變類型與不可變類型
不可變 數字 字符串 元組
可變 列表 子典

遞歸函數
def getNum(num):
? ? if num >1:
?? ?? ? return num * getNum(num-1)

? ? else:
?? ?? ? return num

匿名函數
lambda 參數:式子
變量 = lambda x,y:x+y
變量()
用於字典的排序
stus = [{},{},{}]
stus.sort(key= lambda x:x["key"] or ["value"])

def test(a,b,func)
? ? result = func(a,b)
? ? print(result)
test(11,12,lambda x,y:x+y)

python3 字符串轉化為命令
eval()去掉""相當於語句

字符串的操作
1.find()? 存在返回位置? 不存在返回-1
2.index()? 索引返回位置? 不參在報錯
3.rfind()? ?從右往左
4.rindex()
5.count()出現次數
6.replace() 替換 .replace("","",如果字符串裏面有重復的,這個位子可以跟第幾個)
??不寫默認重復的都修改
7.split() 切割 split(" ") 切割有消耗
8.capitalize() 字符串第一個大寫
9.title()? 每個單詞首字母大寫
10.startswith() 判斷字符串開頭
11.endsswith() 判斷結尾 後綴
12.upper() 都大寫
13.lower() 都小寫
14.rjust() 右對齊
15.ljust() 左對齊
16.center()裏面可以跟寬度
17.lstrip() 刪除左邊的空格
18.rstrip() 刪除右邊的空格
19.partition(str) 分割成三部分
20.rpartition(str) 右邊開始分割
21.splitline() 換行切 \n 碰見編程短字符串
22.isalpha()判斷都是字母
22.isdigit() 判斷都是純數字
23.isalnum() 只包含字母和數字
24.isspace() 是不是純空格
25.join() 字符串把一個東西連在一起

文件的的操作
f = open("","w")
r 只讀 指針放在文件的開頭
w 只寫 存在覆蓋 不存在創建
a 打開一個文件用於追加? 如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
rb 二進制打開一個文件只讀 指針在開頭
wb 而至今寫入
ab 二進制追加
a+ 讀寫 存在 放在結尾
rb+
wb+
ab+
f.close()

如果open是打開一個文件,那麽可以不用謝打開的模式,即只寫?open(‘test.txt‘)
如果使用讀了多次,那麽後面讀取的數據是從上次讀完後的位置開始的
文件的重命名 import os
os .rename()
文件的刪除 import os
os.remove()
文件的備份
#coding=utf-8

oldFileName = input("請輸入要拷貝的文件名字:")

oldFile = open(oldFileName,‘r‘)

如果打開文件if oldFile:

提取文件的後綴

fileFlagNum = oldFileName.rfind(‘.‘)
if fileFlagNum > 0:
fileFlag = oldFileName[fileFlagNum:]

組織新的文件名字

newFileName = oldFileName[:fileFlagNum] + ‘[復件]‘ + fileFlag

創建新文件

newFile = open(newFileName, ‘w‘)

把舊文件中的數據,一行一行的進行復制到新文件中

for lineContent in oldFile.readlines():
newFile.write(lineContent)

關閉文件

oldFile.close()
newFile.close()
?
文件的隨機讀寫

打開一個已經存在的文件

f = open("test.txt", "r")
str = f.read(3)
print "讀取的數據是 : ", str

查找當前位置

position = f.tell()
print "當前文件位置 : ", position

str = f.read(3)
print "讀取的數據是 : ", str

查找當前位置

position = f.tell()
print "當前文件位置 : ", position

f.close()
?
文件的操作
如果在讀寫文件的過程中,需要從另外一個位置進行操作的話,可以使用seek()
seek(offset, from)有2個參數
offset:偏移量
from:方向
0:表示文件開頭
1:表示當前位置
2:表示文件末尾
demo:把位置設置為:從文件開頭,偏移5個字節

打開一個已經存在的文件

f = open("test.txt", "r")
str = f.read(30)
print "讀取的數據是 : ", str

查找當前位置

position = f.tell()
print "當前文件位置 : ", position

重新設置位置

f.seek(5,0)

查找當前位置

position = f.tell()
print "當前文件位置 : ", position

f.close()
?

demo:把位置設置為:離文件末尾,3字節處

打開一個已經存在的文件

f = open("test.txt", "r")

查找當前位置

position = f.tell()
print "當前文件位置 : ", position

重新設置位置

f.seek(-3,2)

讀取到的數據為:文件最後3個字節數據

str = f.read()
print "讀取的數據是 : ", str

f.close()
51cto地址http://blog.51cto.com/n1lixing

本站鏈接:http://www.ldxzs.top

?

python基礎(局部、全局變量、函數、文件的操作)