不卡一区二区三区四区_乱中年女人伦av一区二区_美洲天堂一区二卡三卡四卡视频 _国产一区在线精品_91精品国产品国语在线不卡_99在线精品视频_99这里都是精品_国产99久久精品_99re成人在线_亚洲二区在线视频_久久先锋资源网_国产69精品久久久久毛片_亚洲一区二区三区视频在线_91小视频免费观看_欧美制服丝袜第一页_欧美日韩视频在线一区二区

您現在所在的位置:首頁 >關于奇酷 > 行業動態 > Python進階九大技能

Python進階九大技能

來源:奇酷教育 發表于:

Python進階九大技能

  Python是一種很棒的語言,語法簡單,無需在代碼中搜索分號。對于初學者來說,Python是入門最簡單的語言之一。
 
  Python有大量的庫支持,你還可以安裝其他庫來增加自己的編程經驗。
 
  學了一陣子之后,你可能會覺得:為如此簡單的操作寫大量的代碼有些令人困惑。實際上,事情并沒有你想得那么糟。理解其背后的邏輯比寫幾行代碼更為重要。短代碼更好,但如果邏輯有問題,那么無論如何你的代碼都會有問題。隨著經驗和創造力的增長,最終你的代碼將會變得更短、更好。
 
  初學者與中級程序員
 
  那么,對于Python程序員而言,初學者和進階者有什么區別呢?
 
  本文將重點介紹以下方面:
 
  解決問題和提出問題;XY問題;理解代碼為何起作用(或不起作用);使用字符串;使用列表;使用循環;使用函數(并正確談論函數);面向對象編程;尊重PEP。解決問題和提出問題:程序員缺乏解決問題能力的話,代碼出色也是枉然。
 
  如果你解決問題的思維不夠發達,可能就無法為你要解決的問題找到最佳的解決方案。編程不僅僅是編寫代碼,需要解決問題才能有機會出初學者行列。
 
  提出編程相關的問題也很重要。如果不經嘗試,就讓別人解決你的問題,可能也會出局。這很難,但如果不嘗試自己解決問題,你將對解決方案一無所得。
 
  如果想要了解更多關于編程提問的技能,我另有一篇文章,鏈接如下(英文):How to Ask Questions About Programming:https://medium.com/better-programming/how-to-ask-questions-about-programming-dcd948fcd2bd。
 
  2. XY問題:
 
  “我需要從字符串中提取最后3個字符。”“不,你不需要。只需文件擴展名。”
 
  XY問題很有趣。你有個X問題,當你調用服務中心時,會尋求Y問題的解決方案,以解決X問題。
 
  上面的案例就是極好的例子。如果想要文件名中的文件擴展名,很容易假設你需要的是最后3個字母。
 
  如何寫代碼:
 
  def extract_ext(filename):return filename[-3:]print (extract_ext('photo_of_sasquatch.png'))>>> png好極了,現在換成photo_of_lochness.jpeg:
 
  用戶從一開始應該會索要擴展名,最后3個字母是Y問題,而X問題是我們想要擴展名。
 
  def extract_ext(filename):return filename.split('.')[-1]print (extract_ext('photo_of_sasquatch.png'))print (extract_ext('photo_of_lochness.jpeg'))>>> png>>> jpeg成功了!
 
  你也可以使用標準庫 `os.path.splitext `,點擊這里查看:os.path.splitext:https://www.geeksforgeeks.org/python-os-path-splitext-method/。
 
  3. 理解代碼為何起作用(或不起作用):
 
  作為新手,你可能要花幾天來對付一小段代碼。如果這段代碼突然起作用了,你可能會感覺放心,然后繼續下一段代碼。這是最糟糕的事情之一。不理解原因只管運行的做法,可能比不理解代碼的為什么不運行更加危險。
 
  不理解為何代碼不運行的情況總會發生,當進行故障排除并搞清楚其原因時,思考代碼不運行的原因和最終使其運行的因素非常重要。這次學到的知識會帶到下一個程序中。
 
  例如,如果多個縮進級別的代碼中出現了縮進錯誤,可以嘗試隨機調整代碼塊,然后在最終運行時為自己慶祝。
 
  切記,在大多數IDE中,可以折疊循環和if語句,從而更容易查看正在使用的部分。
 
  另一種辦法是將你的代碼通過 www.pythontutor.com可視化,就可以逐行查看代碼運行的方式了。

 
  使用pythontutors執行代碼
 
  4. 使用字符串:
 
  這部分內容其實與字符串不完全相關,與挖掘Python優雅的庫有更大關系。
 
  我們很早就在Python中學過,字符串也可以看作是一串字符。你也可以使用索引訪問字符串中的字符。
 
  word='supergreat'print (f'{word[0]}')>>> sprint (f'{word[0:5]}')>>> super敏銳的學習者會查看`str`所提供的內容,但也可以不查看 `str`文檔繼續編程。
 
  查看函數或過程文檔可以通過調用 `help(str)` 或者`dir(str)`來實現。執行此操作時,你可能會發現一些并不知道的方法,也許你在查看`str`時,找到有個名叫 `endswith` 的方法,或許能用在某處。

 
  下面是一些以兩種不同方式執行相同操作的代碼案例,一種用到了我們才談過的拆分,還有一種用到了我們剛剛學到的 `endswith` :
 
  filenames=['lochness.png' , 'e.t.jpeg' , 'conspiracy_theories_CONFIRMED.zip']# 1: Using ENDSWITHfor files in filenames:if files.endswith('zip'):print(f'{files} is a zip file')else:print (f'{files} is NOT a zip file')# 2: Using SPLITfor files in filenames:if files.split('.')[-1]=='zip':print(f'{files} is a zip file (using split)')else:print (f'{files} is NOT a zip file (using split)')大多程序員是從來不會把所有文檔讀遍來學習全部內容的。作為一名程序員,部分工作就是要搜索如何解決問題的信息。 
 
  5. 使用列表:
 
  列表很棒,用途也很廣泛。
 
  下面的案例中,我們將整數和字符串混合在了一起:
 
  my_list=['a' , 'b' , 'n' , 'x' , 1 , 2 , 3, 'a' , 'n' , 'b']for item in my_list:print (f'current item: {item}, Type: {type(item)}')

 
  注意我們是怎么將字符串和整數混合在一起的,如果嘗試對其排序,就會報錯:
 
  print (my_list.sort)

 
  如果我們想把整數與字母分開要怎么做?一種方式是通過循環來實現,我們可以遍歷列表中的所有項目。初學者很早就會使用循環了,循環對于編程也很重要。
 
  代碼可能是下面這樣的:
 
  my_list=['a' , 'b' , 'n' , 'x' , 1 , 2 , 3 , 'a' , 33.3 , 'n' , 'b']number_list=string_list=for item in my_list:print (f'current item: {item}, Type: {type(item)}')if not isinstance(item,str):number_list.append(item)else:string_list.append(item)my_list=string_list即便有些混亂,這也是一種有效的方式,可以運行,不過經過重構可以用單行來表示!
 
  如果想要生活多些樂趣,請學習Python的列表解析式,下面是同樣問題通過列表解析式得出的:
 
  my_list=[letter for letter in my_list if isinstance(letter,str)]就是這樣!
 
  還沒結束!使用過濾器也可以獲得同樣的結果:
 
  def get_numbers(input_char):if not isinstance(input_char,str):return Truereturn Falsemy_list=[1,2,3,'a','b','c']check_list=filter(get_numbers, my_list)for items in check_list:print(items)

 
  現在你可能明白了,實現同樣的結果有很多方法,你必須找出適合你或你團隊的那個。
 
  額外知識點
 
  反向列表(或字符串): names=['First' , 'Middle' , 'Last']print(names[::-1])>>> ['Last', 'Middle', 'First']在列表中加入元素:names=['First' , 'Middle' , 'Last']full_name=' '.join(names)print(f'Full Name: {full_name}')>>> First Middle Last6. 使用循環:是否在Python中見過這樣的代碼?
 
  greek_gods=['Zeus' , 'Hera' , 'Poseidon' , 'Apollo' , 'Bob']for index in range(0,len(greek_gods)):print (f'at index {index} , we have : {greek_gods[index]}')你可能發現了,它來自其他語言,這不是Python的風格。在Python中,你可以使用for-each循環:
 
  for name in greek_gods:print (f'Greek God: {name}')你很快就能發現,這里我們不包含索引。如果想用索引打印要怎么做?在Python中,你可以使用枚舉(enumerate參數),這是一種訪問所需內容的絕佳方案。
 
  for index, name in enumerate(greek_gods):print (f'at index {index} , we have : {name}')

 
  7. 使用函數(并正確談論函數):
 
  我在從事動畫工作時,總是說如果同一個操作重復5次,就應該考慮是否需要寫個程序。有些時候花上兩周開發一款工具可以節省你六個禮拜的工作時間。
 
  編寫代碼時,如果發現同一動作執行了不止一次,應該考慮這是過程還是函數,還不只是寫寫代碼。函數會返回內容,過程則只是運行代碼,第一個案例是個過程,第二個是函數。
 
  這樣說可能會令人困惑,下面是其工作原理的示意圖: 
 
  注意print和return的差異,看起來也許很相似,但如果你查看輸出結果,函數只會返回發送的名稱。
 
  下一個要了解的語法是parameters和arguments,在過程或函數中定義時(紅色部分)被稱為形參(parameters),當發送名稱到過程或函數中(綠色部分)時就叫實參(arguments)了。
 
  下面是些案例:
 
  案例1
 
  def print_list(input_list):for each in input_list:print(f'{each}')print #just to separate outputgreek_gods=['Zeus' , 'Hera' , 'Poseidon' , 'Apollo' , 'Bob']grocery_list=['Apples' , 'Milk' , 'Bread']print_list(greek_gods)print_list(grocery_list)print_list(['a' , 'b' , 'c'])

 
  無需把循環寫上3次,只需在過程中寫上一次,然后在需要時調用即可。在案例2中,你可以發現代碼是如何返回反向列表的。
 
  案例2
 
  def reverse_list(list_input):return list_input[::-1]my_list=['a', 'b' , 'c']print (reverse_list(my_list))>>> ['c', 'b', 'a']8.面向對象編程
 
  Python是一種面向對象的語言,其強大之處在于對象。將對象視為藍圖,如果使用藍圖,你可以創建該藍圖的實例。也就是說,你可以創建需要的多個藍圖實例,但不會損毀你使用的藍圖。
 
  面向對象編程(OOP)是一個龐大的話題,因此我們不會在本節中涵蓋所有你需要了解的內容,但可以通過幾個簡單的示例幫你入門。
 
  如果你之前讀過面向對象編程的相關內容,可能已經厭倦了學生(student)類,但我們又來了。從定義一個名為student的類開始,student會擁有一個名稱和一個subject_list:
 
  class Student:def __init__(self,name):self._name=nameself._subject_list=如果想要創建一個student,可以像這樣將其分配給變量:student1=Student('Martin Aaberge')如果需要更多student,可以使用同一個類并添加另外的姓名:student2=Student('Ninja Henderson')`student1`和`student2`都是student類的實例,它們共享同一個藍圖,但彼此之間并無關系。此時,我們對學生們能做的不多,但我們確實增加了一個主題列表。要填充此列表,我們需要創建方法,你可以調用方法來實現與該類實例的交互。
 
  我們更新:
 
  class Student:def __init__(self,name):self._name=nameself._subject_list=def add_subject(self, subject_name):self._subject_list.append(subject_name)def get_student_data(self):print (f'Student: {self._name} is assigned to:')for subject in self._subject_list:print (f'{subject}')print這個類可以用于創建、編輯學生信息,并獲取我們存在其中的信息:
 
  #create students:student1=Student('Martin Aaberge')student2=Student('Heidi Hummelvold')#add subjects to student1student1.add_subject('psychology_101')student1.add_subject('it_security_101')#add subject to student2student2.add_subject('leadership_101')#print current data on studentsstudent1.get_student_datastudent2.get_student_data將類保存在單獨的文件中并導入主代碼的操作很常見,在我們的案例中,我們會在student.py文件中創建一個`student`類,并將其導入我們的main.py文件(本案例中,它們都位于同一個文件夾中)。
 
  from student import Studentstudent1=Student('Martin')student1.add_subject('biomechanics_2020')student1.get_student_data

 
  student類和main.py在使用它 
 
  9.尊重PEP
 
  我們經常看到人們在寫Python代碼時并不尊重PEP(Python增強提案:Python Enhancement Proposals),但我自己會尊重。
 
  當你在開發環境中工作時,遵守標準非常重要——如果不是PEP標準,也至少要遵守公司的標準。
 
  PEP是代碼的一組準則,下面是PEP-8的鏈接(https://www.python.org/dev/peps/pep-0008/),讀起來很棒。請確保你通讀過一次,了解大概內容。一個典型的案例是`snake_case`,Python是以`snake_case`來寫的,這代表著我們用下劃線來區分詞組,即便大學里也會犯錯,因此別難過,只要別這樣做就行了。
 
  這樣寫是對的: 
 
  chocolate_cake='yummy'這樣是錯的:
 
  chocolateCake='Yummy'
 
  結論
 
  入門是了不起的體驗,需要艱苦鉆研,但你的學習曲線急遽上升,用新的經驗填滿你。
不卡一区二区三区四区_乱中年女人伦av一区二区_美洲天堂一区二卡三卡四卡视频 _国产一区在线精品_91精品国产品国语在线不卡_99在线精品视频_99这里都是精品_国产99久久精品_99re成人在线_亚洲二区在线视频_久久先锋资源网_国产69精品久久久久毛片_亚洲一区二区三区视频在线_91小视频免费观看_欧美制服丝袜第一页_欧美日韩视频在线一区二区
亚洲精品高清国产一线久久| 一本久道久久综合| 亚洲图片激情小说| 精品粉嫩aⅴ一区二区三区四区| 亚洲精品一区二区三区蜜桃久| 精品国产一区二区三区四区精华| 久久久蜜桃精品| 欧美日韩精品一二三区| 国内精品国语自产拍在线观看| 不卡av免费在线观看| 国产精品一区在线观看你懂的| 蜜臀久久99精品久久久久久9 | 国产九色精品| 国产成人精品免费视频网站| 久久99深爱久久99精品| 久久久精品人体av艺术| 欧美日本在线播放| 色偷偷久久人人79超碰人人澡| 极品尤物一区二区三区| 亚洲视频中文字幕| 国产欧美日韩视频一区二区| 一区二区三区av在线| 国产在线一区二区三区欧美 | 成人av影院在线| 亚洲欧洲av一区二区三区久久| 欧美大香线蕉线伊人久久| 2023国产精品| 精品国产一区二区三区麻豆小说| www国产亚洲精品| 一区二区在线观看免费视频播放| 日韩精品一区二区三区三区免费| 成人免费毛片a| 91丨porny丨首页| 国产精品美女诱惑| 韩国午夜理伦三级不卡影院| 成人免费视频在线观看| 在线观看欧美日本| 一本久久a久久精品亚洲| 涩涩涩999| 激情综合网av| 成人一区在线观看| 裸体在线国模精品偷拍| 另类小说图片综合网| 午夜久久电影网| 欧美国产精品中文字幕| 青青草成人激情在线| 裸模一区二区三区免费| 国产精品美女久久福利网站| 久热国产精品视频一区二区三区| 日产精品久久久久久久性色| 亚洲一卡二卡三卡四卡无卡久久 | jizz一区二区| 国产馆精品极品| 国产成人免费av在线| 97久草视频| 亚洲看片网站| 欧美一级午夜免费电影| 91黄色激情网站| 欧美精选在线播放| 欧美群妇大交群中文字幕| 日本电影一区二区三区| 欧美日韩三级视频| 国产精品大全| 国产乱码精品一区二区三区中文| 成人国产精品免费观看视频| 99视频精品在线| 视频一区二区三区免费观看| 欧美色视频一区| ...xxx性欧美| 国产精品你懂的在线欣赏| 日韩二区三区四区| 91蝌蚪国产九色| 在线欧美小视频| 久久女同性恋中文字幕| 日本 国产 欧美色综合| 97人人模人人爽视频一区二区| 亚洲一区二区三区乱码| 欧美一区二区三区视频免费播放| 精品久久久三级丝袜| 欧美精品在线视频| 一区二区三区在线观看视频| 国产69精品一区二区亚洲孕妇| 国产精品一区二| 成人免费毛片嘿嘿连载视频| 日韩视频在线播放| 久久久五月婷婷| 久久av老司机精品网站导航| 久久99欧美| 欧美视频一区二区三区在线观看 | 亚洲国产精品一区二区第一页| 久久综合久久99| 日韩高清一区二区| 国产精品久久精品视| 91精品国产综合久久久蜜臀粉嫩| 亚洲视频资源在线| 不卡的av网站| 欧美视频完全免费看| 亚洲在线视频网站| 国产精选在线观看91| 欧美v日韩v国产v| 麻豆91小视频| 蜜桃久久精品乱码一区二区 | 国产精品久久久久久妇女6080 | 成人91视频| 在线亚洲欧美专区二区| 国产精品成人网| 成人av高清在线| 欧美亚日韩国产aⅴ精品中极品| 亚洲同性gay激情无套| 国产精品欧美久久久久无广告 | 亚洲va欧美va人人爽| www国产亚洲精品| 日韩视频一区二区三区 | 国产aⅴ综合色| 欧洲精品在线观看| 日韩精品欧美精品| 一区不卡字幕| 亚洲高清免费在线| 日韩精品国内| 欧美激情一二三区| 91久色porny| 久久精品免视看| 91在线观看视频| xnxx国产精品| 91年精品国产| 91精品久久久久久蜜臀| 美女网站一区二区| 欧美影片第一页| 国产又粗又猛又爽又黄91精品| 欧美日韩在线精品一区二区三区激情| 亚州成人在线电影| 蜜桃成人在线| 亚洲国产欧美在线| 欧美精品一区二区三区在线看午夜 | 日韩av大全| 亚洲高清在线精品| 亚洲一二区在线| 亚洲美女淫视频| 日本欧美精品久久久| 日欧美一区二区| 欧美日韩dvd在线观看| 粉嫩aⅴ一区二区三区四区五区| 欧美成人激情免费网| 不卡一区在线观看| 中文字幕成人av| 国产偷久久久精品专区| 一区二区三区免费看视频| 一本大道综合伊人精品热热| 美腿丝袜亚洲三区| 91精品久久久久久久久99蜜臂| 国产91精品久久久久久久网曝门| 欧美va亚洲va在线观看蝴蝶网| 国产精品theporn88| 亚洲精品在线一区二区| 99久久精品费精品国产一区二区| 精品电影一区二区三区| 精品综合在线| 久久久久亚洲蜜桃| 久久伦理网站| 看片的网站亚洲| 26uuu久久综合| 久久精品国产美女| 久久99精品久久久| 日本一区二区三区久久久久久久久不 | 亚洲6080在线| 欧美一区日韩一区| 国产欧美日韩一区| 蜜桃久久久久久久| 欧美精品一区二区三| 欧美在线视频一区二区三区| 久久99国内精品| 欧美激情一区二区三区全黄| 中国成人亚色综合网站| 91丨九色丨蝌蚪丨老版| 成人欧美一区二区三区小说| 一本久道中文字幕精品亚洲嫩| 国产成人午夜精品5599| 亚洲精品国产精华液| 欧美一级黄色大片| 日韩精品极品视频在线观看免费| 91麻豆国产福利精品| 国产一区欧美日韩| 亚洲va欧美va国产va天堂影院| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美日韩久久久| 中文字幕一区二区三区精彩视频| 玖玖玖精品中文字幕| http;//www.99re视频| 国产不卡视频在线播放| 免费成人美女在线观看.| 一区二区三区视频在线看| 久久久精品国产99久久精品芒果 | 国产剧情一区二区| 亚洲成人免费在线| 1024精品合集| 国产亚洲成年网址在线观看| 欧美成人免费网站| 欧美日韩中文字幕一区二区| 一区二区三区四区五区精品| 日韩经典在线视频|