-
1.6Python中raw字符串與多行字符串
如果一個字符串包含很多需要轉義的字符,對每一個字符都進行轉義會很麻煩。為了避免這種情況,我們可以在字符串前面加個前綴r,表示這是一個?raw?字符串,里面的字符就不需要轉義了。
但是r'...'表示法不能表示多行字符串,也不能表示包含'和?"的字符串。
如果要表示多行字符串,可以用'''...'''表示。
還可以在多行字符串前面添加r,把這個多行字符串也變成一個raw字符串。
查看全部 -
1.5Python的字符串
字符串可以用' '或者" "括起來表示。
如果字符串本身包含'怎么辦?比如我們要表示字符串?I'm OK?,這時,可以用" "括起來表示,如果字符串包含",我們就可以用' '括起來表示。
如果字符串既包含'又包含",就需要對字符串中的某些特殊字符進行“轉義”,Python字符串用\進行轉義。
注意:轉義字符?\不計入字符串的內容中。
要表示字符串Bob said "I'm OK"
'Bob said \"I\'m OK\".'
常用的轉義字符還有:
\n表示換行
\t?表示一個制表符
\\表示?\?字符本身查看全部 -
5-1什么是容器、什么是list
在程序中,容器是一種可以把多個元素放在一起的數據結構,容器中的元素可以逐個地迭代獲取,可以用in, not in等關鍵字判斷某個元素是否包含在容器中。
在Python中,包括列表(list)、元組(tuple)、字典(dict)、集合(set)等,他們都可以放入多個元素,因此都可以算作是容器,這些容器是Python編程中非常重要的數據結構。
list
列表(list)是一種有序的容器,使用中括號[]把需要放在容器里面的元素括起來,就定義了一個列表。
list可以放入數字、字符串等數據類型,list不對放入其中的類型進行判斷,也就是說,list可以同時放入任意類型的數據。
查看全部 -
dict提供keys()函數,可以返回dict中所有的key。
dict提供values()函數,可以返回dict中所有的value。
dict提供clear()函數,可以直接清除dict中所有的元素。
查看全部 -
常用的轉義字符還有:
\n表示換行
\t?表示一個制表符
\\表示?\?字符本身查看全部 -
需要注意的是,not計算的優先級是高于and和or的。
查看全部 -
dict查找速度快但占用內存大;list查找速度慢但占內存小
ditct元素無序
key不可變,因此tuple可做key,list不可
keys()會返回所有key
items()會返回dict中所有元素,每個元素包含key和value
查看全部 -
pop()方法需要指定需要刪除的元素的key,并返回對應的value。但key不存在時,pop會引發錯誤。
查看全部 -
list可用extend()一次添加多個元素
查看全部 -
dict是可變的
查看全部 -
dict提供通過key找到對應value的功能,通過d[key]的形式,就可以得到對應的value。
dict本身提供get方法,把key當作參數傳遞給get方法,就可以獲取對應的value,當key不存在時,也不會報錯,而是返回None。
查看全部 -
函數會把可變參數當作tuple去處理,tuple在使用上有一定的局限性。
比如有時候想找到特定位置的參數,只能通過下標的方式去尋找,如果順序發生變化得時候,下標就會失效,函數邏輯就得重新修改實現。
Python函數提供可變關鍵字參數,對于可變關鍵字參數,可以通過關鍵字的名字key找到對應的參數值。Python會把可變關鍵字參數當作dict去處理;對于可變關鍵字參數,一般使用**kwargs來表示。
對于一個擁有必需參數,默認參數,可變參數,可變關鍵字參數的函數,定義順序是這樣的:
def?func(param1,?param2,?param3?=?None,?*args,?**kwargs): ????print(param1) ????print(param2) ????print(param3) ????print(args) ????print(kwargs) func(100,?200,?300,?400,?500,?name?=?'Alice',?score?=?100)
這么多類型的參數,很容易導致出錯,在實際使用上,不建議定義這么多的參數。
任務:
# 編寫一個函數,它接受關鍵字參數names,gender,age三個list,分別包含同學的名字、性別和年齡,請分別把每個同學的名字、性別和年齡打印出來。
#?Enter?a?code def?info(**kwargs): ????tamplate?=?"name:?{},?gender:?{},?age:?{}" ????name_list?=?kwargs.get('name') ????gender_list?=?kwargs.get('gender') ????age_list?=?kwargs.get('age') ????for?i?in?range(len(name_list)): ????????print(tamplate.format(name_list[i],?gender_list[i],?age_list[i])) names?=?['Alice',?'Ash',?'Amy',?'Eloit',?'Himmy'] genders?=?['girl',?'boy',?'girl',?'boy',?'boy'] ages?=?[13,?12,?14,?17,?14] info(name?=?names,?gender?=?genders,?age?=?ages)
查看全部 -
除了默認參數,Python函數還接收一種參數叫做可變參數,可變參數即任意個參數的意思,可變參數通常使用*args來表示。
Python會把可變參數定義為一個tuple,所以在函數內部,把可變參數當作tuple來使用。以通過位置下標取出對應的元素。
定義可變參數的目的也是為了簡化調用。
可變參數的長度可能是0,當長度為0的時候,就會出現除0錯誤。
因此需要添加保護的邏輯,這是同學在使用過程中需要特別注意的。
任務:
# 請完善average()函數,使得當可變參數長度為0的時候,也能正確返回結果。
#?Enter?a?code def?average(*args): ????if?len(args)?!=?0: ????????sums?=?sum(args)?+?0.0 ????????avg?=?sums?/?len(args) ????????return?avg ????else: ????????return?0 print(average()) print(average(1,?2)) print(average(1,?2,?2,?3,?4))
查看全部 -
定義函數的時候,還可以有默認參數,默認參數的意思是當這個參數沒有傳遞的時候,參數就使用定義時的默認值。
Python自帶的 int() 函數,其實就有兩個參數,我們既可以傳一個參數,又可以傳兩個參數。int()函數的第二個參數是轉換進制base,如果不傳,默認是十進制 (base=10),如果傳了,就用傳入的參數。函數的默認參數的作用是簡化調用。
函數的參數按從左到右的順序匹配,所以默認參數只能定義在必需參數的后面,否則將會出現錯誤。
def?power(x,?n=2):
任務:
# 請定義一個 greet() 函數,它包含一個默認參數,如果沒有傳入參數,打印?Hello, world.,如果傳入參數,打印Hello, 傳入的參數內容.
#?Enter?a?code def?greet(s?=?"world"): ????tamplate?=?'Hello,{x}.' ????print(tamplate.format(x?=?s)) greet() greet("Lv")
查看全部 -
函數參數是需要傳遞給函數內部的數據。
函數參數可以是任意的數據類型,只要函數內部邏輯可以處理即可。
為了保證函數的正常運行,有時候需要對函數入參進行類型的校驗。
Python提供isinstance()函數,可以判斷參數類型,它接收兩個參數,第一個是需要判斷的參數,第二個是類型。
isinstance(100,?int)?#?==>?True
任務:
# 請實現函數func,當參數類型為list時,返回list中所有數字類型元素的和,當參數類型為tuple時,返回tuple中所有數字類型元素的乘積。
#?Enter?a?code def?func(lt): ????if?isinstance(lt,?list): ????????num_sum?=?0 ????????for?x?in?lt: ????????????if?isinstance(x,?int)?or?isinstance(x,?float): ????????????????num_sum?+=?x ????????return?num_sum ????if?isinstance(lt,?tuple): ????????num_mul?=?1 ????????for?y?in?lt: ????????????if?isinstance(y,?int)?or?isinstance(y,?float): ????????????????num_mul?+=?y ????????return?num_mul ????return?None L?=?['areg',?1,?3,?5,?'a',?4] T?=?('sh',?2,?3,?4,?0,?'fs') lt?=?func(L) tp?=?func(T) print(lt,?tp)
查看全部
舉報