傳送門: Python入門案例第一天(Python基礎語法上).
傳送門: Python入門案例第二天(Python基礎語法中).
【Python】Python入門案例第三天(Python基礎語法下)
- 一、Python中的字串
- 1.字串的駐留機制
- 2.字串的相關操作
- 3.字串的替換與合并
- 4.字串的切片操作
- 5.字串的比較操作
- 6.格式化字串的3種方式
- 7.字串的編碼轉換
- 二、python中的函式
- 1.函式的創建和呼叫
- 2.變數的作用域
- 3.遞回函式:
一、Python中的字串
字串是python中的基本資料型別,是一個不可變的字符序列
1.字串的駐留機制
僅保存一份相同且不可變字串的方法,不同的值被存放在字串的駐留池中,python的駐留機制對相同的字串只保留一份拷貝,后續創建相同字串時,不會開辟新空間,而是把該字串的地址賦給新創建的變數,
字串駐留機制的優缺點:
當需要值相同的字串時,可以直接從字串池里拿來使用,避免頻繁的創建和銷毀,提升效率和節約記憶體,因此拼接字串和修改字串是會比較影響性能的,
在需要進行字串拼接時建議使用str型別的join方法,而非+,因為join()方法是先計算出所有字串中的長度,然后再拷貝,只new一次物件,效率要比“+”效率高,
a='Python'
b="Python"
c='''Python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))
輸出結果:
Python 2990483081904
Python 2990483081904
Python 2990483081904
2.字串的相關操作
(1)字串的查詢操作:
s='hello,world'
print(s.index('lo'))#3
print(s.find('lo'))#3
print(s.rfind('lo'))#3
(2)字串的大小寫轉換操作的方法
a=s.upper() #轉換成大寫之后,會產生一個新的字串物件
print(a,id(a))
print(s,id(s))
b=s.lower()
print(b,id(b))
print(s,id(s))
輸出結果:
HELLO,WORLD 1906161060080
hello,world 1906160711280
hello,world 1906161060144
hello,world 1906160711280
(3)字串內容對齊的操作
c='hello,Python'
print(c.center(20,'*'))#居中對齊
print(c.ljust(20,'*'))#左對齊
print(c.rjust(20,'*'))#右對齊
print(c)
輸出結果:
****hello,Python****
hello,Python********
********hello,Python
hello,Python
(4)字串分段操作
d='hello,Python'
lst=d.split()
print(lst)
d='hello|world|Python'
print(d.split(sep='|'))
print(d.split(sep='|',maxsplit=1))
#rsplit()從右邊開始分段
print(d.rsplit())
print(d.rsplit("|"))
print(d.rsplit(sep='|',maxsplit=1))
輸出結果:
['hello,Python']
['hello', 'world', 'Python']
['hello', 'world|Python']
['hello|world|Python']
['hello', 'world', 'Python']
['hello|world', 'Python']
3.字串的替換與合并
s='hello,world'
print(s.replace('Python','Java'))
s2='hello,world,Python,Python'
print(s2.replace('Python','java',2))
lst=['hello','java','python']
print('|'.join(lst))
print(''.join(lst))
t=('hello','java','python')
print(''.join(t))
print('*'.join('python'))
輸出結果:
hello,world
hello,world,java,java
hello|java|python
hellojavapython
hellojavapython
p*y*t*h*o*n
4.字串的切片操作
#字串是不可變型別,不具備增刪改等操作,切片操作將產生新的物件,
#切片[start🔚step]
s2='helloworld'
s5=s2[:5] #由于沒有指定起始位置,所以從0開始切
s3=s2[6:] #由于沒有指定結束位置,所有切到字串的最后一個位置
s4='!'
newstr=s5+s3+s4
print(s5)
print(s3)
print(s4)
print(newstr)
#切片[start:end:step]
print(s2[1:5:1])
輸出結果:
hello
orld
!
helloorld!
ello
5.字串的比較操作
(1)運算子:>,>=,<,<=,==,!=
(2)比較規則:首先比較兩個字串中的第一個字符,如果相等則繼續比較下一個字符,依次比較下去,直到兩個字串中的字符不相等時,其比較結果就是兩個字串的比較結果,兩個字串中所有后續字符將不再被比較,
(3)比較原理:兩個字符進行比較時,比較的是其ordinal value(原始值),呼叫內置函式ord可以得到指定字符的原始值,與內置函式ord對應的是內置函式chr,呼叫內置函式chr時,指定ordinal value可以得到其對應的字符,
s='hello'
s1='helloworld'
print(s>s1)
print(s<s1)
==與is的區別
==比較的是value
is比較的是id是否相等
a=b='python'
c='python'
print(a==b==c)
print(a is b)
print(a is c)
6.格式化字串的3種方式
(1)%作占位符:%s-字串,%i或%d-整數,%f-浮點數
name='安逸'
age=18
print('我的名字叫:%s,今年%d歲'%(name,age))
輸出結果:
我的名字叫:安逸,今年18歲
(2){}作占位符:‘我的名字叫:{0},今年{1}歲’.format(name,age)
print('我的名字叫:{0},今年{1}歲'.format(name,age))
輸出結果:
我的名字叫:安逸,今年18歲
(3)#f-string
print(f'我的名字叫:{name},今年{age}歲')
輸出結果:
我的名字叫:安逸,今年18歲
print('%10d' %99)#10表示的是寬度
print('%.3f'%3.1415926)#.3表示的是小數點后三位
print('%10.3f'%3.1415926)#同時表示寬度和精度
7.字串的編碼轉換
#str在記憶體中以Unicode表示
#編碼與解碼的方式
#編碼:將字串轉換成二進制資料(bytes)
#解碼:將bytes型別的資料轉換成字串型別
#編碼
s='努力賺錢'
print(s.encode(encoding='GBK'))#在GBK格式中一個中午占兩個位元組
print(s.encode(encoding='UTF-8'))#在UTF-8格式中一個中午占3個位元組
#解碼
#byte代表就是一個二進制資料(位元組型別的資料)
byte=s.encode(encoding='GBK') #先編碼
print(byte.decode(encoding='GBK')) #解碼,解碼格式要與編碼格式一致,否則會報錯
輸出結果:
b'\xc5\xac\xc1\xa6\xd7\xac\xc7\xae'
b'\xe5\x8a\xaa\xe5\x8a\x9b\xe8\xb5\x9a\xe9\x92\xb1'
努力賺錢
二、python中的函式
1.函式的創建和呼叫
#什么是函式:函式就是執行特定任務和以完成特定功能的一段代碼
#函式的作用:復用代碼;隱藏實作細節;提高可維護性;提高可讀性便于除錯
(1)函式的創建:
def calc(a,b):
c=a+b
return c
print(calc(1,2))
(2)函式引數的傳遞:
a,b稱為形式引數,簡稱形參,形參的位置是在函式定義處
1,2稱為實際引數,簡稱實參,實參的位置是在函式呼叫處.
(3)函式的回傳值:
1)如果函式沒有回傳值[函式執行完畢之后,不需要給呼叫處提供資料],return可以省略不寫
2)函式的回傳值,如果是1個,直接回傳原型別
3)函式回傳多個值時,結果為元組
(4)函式的引數定義:
#函式定義默認值引數:函式定義時,給形參設定默認值,只有與默認值不符的時候才需要傳遞實參,
1)個數可變的位置引數:(只能一個)
定義函式的時候,可能無法事先確定傳遞的位置實參的個數時,使用可變的位置引數可以解決
使用*定義個數可變的位置形參
結果為一個元組
def fun(*args):
print(args)
fun(10)
fun(10,20,30)
輸出結果:
(10,)
(10, 20, 30)
2)個數可變的關鍵字形參:(只能一個)
定義函式的時候,可能無法事先確定傳遞的關鍵字實參的個數時,使用可變的關鍵字形參可以解決
使用**定義個數可變的關鍵字形參
結果為一個字典
def fun2(**args):
print(args)
fun2(a=10)
fun2(a=10,b=20)
輸出結果:
{'a': 10}
{'a': 10, 'b': 20}
2.變數的作用域
程式代碼能訪問該變數的區域
根據變數的有效范圍可分為:
區域變數:在函式內定義并使用的變數,只在函式內部有效,區域變數使用global宣告,這個變數就會成為區域變數,
全域變數:函式體外定義的變數,可作用于函式內外,
3.遞回函式:
什么是遞回函式:如果在一個函式的函式體內呼叫了該函式本身,這個函式就稱為遞回函式
遞回的組成部分:遞回呼叫與遞回終止條件,
遞回的呼叫程序:每遞回呼叫一次函式,都會在堆疊記憶體分配一個堆疊幀,每執行完一次函式,都會釋放相應的空間,
遞回的優缺點:缺點:占用記憶體多,效率低,
優點:思路和代碼簡單,
#計算6的階乘
def fun(n):
if(n==1):
return 1
else:
return n*fun(n-1)
print(fun(6))

若本篇內容對您有所幫助,請三連點贊,關注,收藏支持下,
創作不易,白嫖不好,各位的支持和認可,就是我創作的最大動力,我們下篇文章見!
安逸 | 文
如果本篇博客有任何錯誤,請批評指教,不勝感激 !
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/292727.html
標籤:python
上一篇:Python游戲開發,pygame模塊,Python實作2048小游戲
下一篇:學習Python第三周總結
