Python之三元運算、集合、函數


一、三元運算符
三元運算符就是在賦值變量的時候,可以直接加判斷,然后賦值
格式:[on_true] if [expression] else [on_false]
res = 值1 if 條件 else 值2
1.舉例說明:
a =1
b = 2
c= a if a>1 else b #如果a大於1的話,c=a,否則c=b
 
如果不用三元運算符,就用if-else條件判斷,如下:
a = 1
b = 2
if a >1:
c = a
else:
c = b
 
2.三元運算符也可以用在列表和字典中
例:1-10的數字,打印出其中的偶數
三元運算:
ss = [i for i in range(1,11) if i%2==0 ] #循環1-11間的值(不包括11),如果值能被2整除(即取偶數),就寫到ss這個list中
print(ss) #最終打印結果 [2, 4, 6, 8, 10]
 
if-else條件判斷
s = []
for i in range(1,11):
if i %2==0:
s.append(i)
print(s)
 
 
二、集合
集合:set持有一系列元素,和list很像,也是一種數據類型,但是set的元素沒有重復,而且是無序的
特點:set不包含重復的元素(天生去重)且無序
 
2.集合的定義
a.定義一個列表,通過強制轉換來定義集合
nums = [1,1,2,3,5,6,77,8]
num_set = set(nums)
b.直接定義
num_set1={1,2,3,3,4}
集合不能通過下標來訪問元素
 
3.循環遍歷set
s = set(['Adam', 'Lisa', 'Bart'])
for name in s:
print (name)
結果:
Lisa
Bart
Adam
 
4.添加元素
s = {1,2,3}
s.add(4)
print(s)#結果 {1, 2, 3, 4}
 
s.update([333,444,333])
s.update({56,78,999})
 
5.刪除元素
s.remove(333) #刪除元素,如果元素不存在就會報錯
s.pop() #刪除一個隨機的元素,並返回刪除的元素
s.discare(111) #如果刪除的元素存在,刪除,不存在不做處理
 
 
三、函數
1.什么是函數?
定義: 函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可。
 
2.使用函數的好處
a.簡化代碼
b.提高代碼的復用性
c.代碼可擴展
 
3.python中函數定義
def functionname( parameters ): function_suite return [expression]
說明:def為關鍵字,后面為函數名,函數名不能重復,括號中內容為參數,根據實際情況,定義你需要的參數個數
function_suite 為 函數體
return 為返回值 如果不寫return這一行的話,默認返回為None
 
4.函數調用
def hello():
print('hello!')
hello() #函數調用,函數調用的方式為,函數名后跟括號
 
5.形參和實參
函數在調用的時候,可以傳入參數,有形參和實參
形參:形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。
 
實參:實參可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。函數調用結束返回主調用函數后則不能再使用該形參變量。
 
6.函數的參數類型
函數的四種參數類型:位置參數、默認參數、不定長參數、關鍵字參數
位置參數:
位置參數,就是按照參數的位置來進行傳參
例:
def reg(name,age):
print('hello %s,age is %s' %(name,age))#name,age是必填參數,位置參數
reg('hhf',27)
說明:有幾個位置參數在調用的時候就要傳幾個,否則就會報錯
如果有多個位置參數,但卻記不住參數的位置,可以使用位置參數的名字來指定調用
具體調用為reg(name='huihui',age=25),這種調用方式叫做關鍵字傳參
 
默認參數:
默認參數就是在定義形參的時候,給函數默認賦一個值
默認參數不是必填的,如果給默認參數傳值的話,它就會使用你傳入的值。如果使用默認值參數的話,必須放在位置參數后面定義
 
例:
def reg(name,age,sex='男'):
print('hello %s,age is %s' %(name,age))#name,age是必填參數,位置參數 #sex是默認值參數,不是必填參數
reg('hhf',27)#不傳sex,sex使用默認值參數,sex='男'
reg('huihui',28,'女') #給sex傳值,sex='女'
 
非固定參數:
上面的兩種位置參數和默認參數都是參數個數是固定的
如果有一個函數,參數不是固定的,也不知道函數會擴展成啥樣,可能參數越來越多,這個時候如果使用固定的參數,后面程序就不好擴展,這時候就可以用非固定參數了
非固定參數有兩種,一種是可變參數,一種是關鍵字參數
可變參數:
可變參數用*來接收,后面想傳多少個參數就傳多少個,如果位置參數、默認值參數、可變參數一起使用的的話,可變參數必須在位置參數和默認值參數后面。可變參數也是非必傳的。
例:
def post(*args):
print(args)
post('001','denglu','http://www.baidu.com',post,a=1)
post()
說明:可變參數,也叫參數組,也不是必填的,它接收到的是一個元組
它把調用函數時傳進去的每一個參數到一個元組里
 
關鍵字參數:
關鍵字參數使用**來接收,后面的參數也是不固定的,想寫多少個寫多少個,當然也可以和上面的幾種一起來使用,如果要一起使用的話,關鍵字參數必須在最后面。
使用關鍵字參數的話,調用的時候必須使用關鍵字傳參,關鍵字參數也是非必傳的
例:
def kw(**kwargs):
print(kwargs)
kw()
kw(age=18,name='aaa')
d={'age':18,'name':'aaa'}
kw(**d)
說明:關鍵字參數,接收的是一個字典,調用得用xx=11,也不是必填的
傳入字典調用的時候就得寫**{'age':18,'name':'aaa'}
 
其它例子:
def other2(name,country='china',*args,**kwargs):
print(name)
print(country)
print(args)
print(kwargs)
other2('hhf')
other2('niuhui','beijing','python','changping',user='niu')
說明:如果必填參數,默認值參數,可變參數和關鍵字參數要一起使用的話,
必須參照必填參數、默認值參數、可變參數和關鍵字參數的順序接收,否則會報錯
 
def write(filename,model,ending,user,os,money,other):
print(filename)
print(model)
print(ending)
print(user)
print(os)
print(money)
print(other)
 
write(os='Windows',user='wubing',model='w',filename='a.tx',ending='utf8',money=9999,other='xxx')
-#write(os='windows','a.txt') #位置參數調用參數必須在關鍵字調用前,否則報錯
write('a.txt','w','gbk2312','hhf',os='windwos',money=9999,other='xxx')
 
7.函數返回值
def plus(a,b):
c=a+b
return c
說明:
a函數碰到return,立即結束這個函數
b調用完函數之后,返回計算結果
c函數可以沒有返回值,如果沒有返回值的話,默認返回None,如果這個函數的處理
結果我們需要在別的地方用到,就得給函數一個返回值
如果函數return多個值的話,那么它就會把多個值放到一個元組里面去
 
score1 = 50
score2 = 90
def echo():
return score1,score2
 
8.局部變量和全局變量
局部變量:在局部內生效,出了這個變量的作用域,這個變量就失效了
全局變量:在整個程序里面都生效的,在程序最前面定義的都是全局變量
-# score3 = [1,2,3,4,5]
-# score3 = {"id":1}
score3 = 100
def my_open():
fw = open('a.txt','a+')
fw.seek(0)
print('score3',score3)
d={'id':2}
d['price']=99
說明:
a.在函數里面定義變量叫局部變量,它只能在函數里面用,出了該函數外,就不能使用了
b.在函數外面定義的變量,是全局變量,在函數內也可以使用
c 如果想在函數里面修改全局變量的值,那么要先用global關鍵字聲明
要修改全局變量是int、string的話,必須得寫global
如果是字典和list的話,要修改的話,不能加global
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM