8個關於Python的小技巧

小咖啡111發表於2019-05-14

今天分享給大家8個小技巧,希望在實戰的時候有幫助!


01.

條件判斷





condition=

True




if  condition:
    x= 1
else :
    x=
2

print  (x)


改成





x

=

1

 

if

 condition 

else

 


2



print  ( x )


02.

大數字分割


如果幾個非常大的數字比如相加的時候,一個數字後面很多零點時候,我們很難去點這個0,比如:



num1=

10000000000



num2= 100000000
print  (num1+num2)


上面的幾個大數字,很多零,點的眼都花了!怎麼辦呢,Python裡面有一個奇淫技巧,可以加下劃線分割:



num1=

10

_000_000_000


num2= 100 _000_000
total=num1+num2
print  ( f' {total:,} ' )
>> 10 , 100 , 000 , 000


03.

檔案的關閉





f

=

open

(

'log.txt'

,

'r'

)


file_contents= f . read ()
f . close ()

words=file_contents. split ( ' ' )
word_count= len (words)
print  (word_count)


用with來處理更簡便



with 

open

(

'log.txt'

,

'r'

as

 

f

:


file_contents= f . read ()
words=file_contents. split ( ' ' )
word_count= len (words)
print  (word_count)


04.

優雅的用下標




names=[

'Corey'

,

'Chris'

,

'Dave'

,

'Apple'

]


index =
for  name in name s:
    print  ( index ,name)
index += 1


使用enumerate來計算下標



names=[

'Corey'

,

'Chris'

,

'Dave'

,

'Apple'

]


for   index ,name in enumerate(names):
    print  ( index ,name)


05.

遍歷多個序列




names=[

'Leo'

,

'Lili'

,

'Sam'

,

'Tom'

]


ages=[ 30 , 20 , 28 , 25 ]
for  index,name  in  enumerate(names):
    age=ages[index]
    print  ( f' {name}  is  {age}  old' )


太麻煩了,用zip更方便




for

 name ,age 

in

 zip(names,ages):


    print  ( f' {name}  is  {age}  old' )


有的同學說如果我有3個序列呢,怎麼辦,一樣可以操作



names=[

'Leo'

,

'Lili'

,

'Sam'

,

'Tom'

]


ages=[ 30 , 20 , 28 , 25 ]
habits=[ 'Movies' , 'Dance' , 'Reading' , 'Singing' ]
for  name ,age,habit  in  zip(names,ages,habits):
    print  ( f' {name}  is  {age}  old and like  {habit} ' )


06.

巧妙的使用單下劃線


我們在一個序列的時候,有的時候,只想取頭和尾,巧妙的用單下劃線




a

,_,

b

=(

1

,

2

,

3

)


print  ( a )
print  ( b )
>>
1
3


但是如果有一個很長的序列的時候,我們想取頭和尾怎麼辦呢,傳統的做法是:



nums=(

1

,

2

,

3

,

4

,

5

,

6

,

7

,

8

,

9

)


head=nums[ ]
tail=nums[- 1 ]
print  (head)
print  (tail)


如果能巧妙的利用unpack方法,就會很簡便:



nums=(

1

,

2

,

3

,

4

,

5

,

6

,

7

,

8

,

9

)


head,*_,tail=nums
print  (head)
print  (tail)


07.

類的屬性封裝





class

 

Person


()

:


    pass
person=Person()

如果你有一個字典需要來初始化這個類

person_info={'first':'leo','last':'sam'}

你希望最後能print (person.first),怎麼辦?有沒有什麼巧妙的方法處理?


用setattr函式




for

 

k

,v in person_info.

items

():


    setattr(person, k ,v)


還有getattr(),可以方便的獲取類的屬性




for

 

k

 in person_info.

keys

():


    print  (getattr(person, k ))



08.

輸入加密的密碼




username=

input

(

'Username: '

)


passwd= input ( 'Passwd:' )
print  ( 'Logging In...' )
>>
Username: user
Passwd:admin
Logging In...


密碼是顯示出來的,這樣肯定不太好,有沒有其他優雅的方法的,用Python自帶的函式getpass




from

 getpass 

import

 getpass


username=input( 'Username: ' )
passwd=getpass( 'Passwd:' )
print  ( 'Logging In...' )
>>
Username: aa
Passwd:
Logging In...

這裡passwd後面會顯示一個鑰匙的圖片


以上就是8個小技巧,如果覺得有用,歡迎留言討論!


Python學習交流群:519489681  備註:小白


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31560357/viewspace-2644348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章