Python中函式,字元編碼,全域性區域性變數的學習

2022-09-12 02:27:17 字數 1877 閱讀 6946

在python2中預設的編碼事ascii,python3中是unicode,在python中encode,在轉碼的同時會把string變成bytes型別,在decode解碼同時把bytes轉成string。

上圖是適用於python2中。

在python3中預設是unicode

msg = "我愛北京天安門"

#msg_gb2312 = msg.decode("utf-8").encode("gb2312")

msg_gb2312 = msg.encode("gb2312") #預設就是unicode,不用再decode,喜大普奔

gb2312_to_unicode = msg_gb2312.decode("gb2312")

gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8")

在進行轉換時所有的格式都要decode稱為unicode在encode成你想要的格式。

函式:

在python中使用函式防止**重用,保持一致性和可擴充套件性。

def fun1():                             def fun2:()

print('in the fun1')                     print('in the fun2')

return 0

x = fun1()

y = fun2()

在列印這兩個函式後顯示 x = 0  y 是none 在fun2函式中沒有進行return預設返回乙個none。

在函式中可以進行傳引數

def test(x,y)  這裡的x y是形參

print(x)

print(y)

test(1,2) 這裡呼叫函式 1,2是實參 這樣時位置呼叫,必須要位置對應。

test (x=1,y=2)這樣是關鍵引數呼叫,位置可以更換,但引數必須全有。

test(2,y=2)也可混合寫,但必須是關鍵引數不能在位置引數前面

預設引數:

def test(x y=5)

print(x)

print(y)

在呼叫引數時 y可以寫也可以不寫

test(3)輸出的就是 3,5

test(3,7)輸出的就是3,7

在實參不固定時形參可以寫成*args

def test(*args)

print(args)

形參中還是可傳入字典是用**kwargs

def test(**kwargs)

print(kwargs)

test(name='zhang',age='23')

全域性區域性變數:

區域性變數

def change_name(name):

print('before name',name)

name = 'zhang'  #這裡只是乙個區域性變數 區域性變數只在函式這個作用域中

print('after name',name)

name =' zhang'

change_name(name)

print(name)

輸出:before name zhang , after name zhang, zhang

全域性變數:

宣告乙個全域性變數要在檔案頭宣告

name = 'zhang'

def change_name(name):

global name  #這是在函式中修改全域性變數的方式。如果全域性變數是字串和整數時,強烈不建議修改全域性變數。列表和字典可以進行修改

name = 'zhang'

python 中字元編碼

背景 在跑hadoop是python指令碼經常要處理不同的格式的編碼資料,主要字元編碼 ascii,gb18030,unicode,utf 8等 python有兩種字串 bytestring hello world in my default locale unicodestring u hello...

Python 中的字元編碼

1 str型別可以理解為乙個二進位制block,或multibyte 2 multibyte str.decode unicode 3 unicode str.encode multibyte str binary block 4 unicode str 的操作引數也應為unicode,如 unic...

Python中的字元編碼

cpu 記憶體 硬碟是計算機的三大核心硬體。1.任何軟體在執行之前,都是以二進位制的格式儲存在硬碟當中的。2.當軟體被開啟時,硬碟將資料載入到記憶體中,cpu再從記憶體中讀取資料被執行。3.軟體在執行過程中產生的資料都是存放於記憶體中,若想永久儲存資料,則得轉移到硬碟中 有的小夥伴可能會想到 那在電...