Python 筆記

来源:http://www.cnblogs.com/shouce/archive/2016/04/29/5445023.html
-Advertisement-
Play Games

()help('What your wannt object') 看對像怎麼用法,按key q退出()在Python中有4種類型的數——整數、長整數、浮點數和複數。 * 2是一個整數的例子。 * 長整數不過是大一些的整數。 * 3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裡,52 ...



()help('What your wannt object') 看對像怎麼用法,按key q退出
()在Python中有4種類型的數——整數、長整數、浮點數和複數。

    * 2是一個整數的例子。
    * 長整數不過是大一些的整數。
    * 3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裡,52.3E-4表示52.3 * 10-4。
    * (-5+4j)和(2.3-4.6j)是複數的例子。



()字元串
# 使用單引號(')

你可以用單引號指示字元串,就如同'Quote me on this'這樣。所有的空白,即空格和製表符都照原樣保留。
# 使用雙引號(")

在雙引號中的字元串與單引號中的字元串的使用完全相同,例如"What's your name?"。
# 使用三引號('''或""")

利用三引號,你可以指示一個多行的字元串。你可以在三引號中自由的使用單引號和雙引號.

# 轉義符 可以通過 轉義符 來完成這個任務。你用\'來指示單引號——註意這個反斜杠。
    @值得註意的一件事是,在一個字元串中,行末的單獨一個反斜杠表示字元串在下一行繼續,而不是開始一個新的行
   
# Unicode字元串: 字元串前加上首碼u或U。例如,u"This is a Unicode string."。
# 字元串是不可變的  這意味著一旦你創造了一個字元串,你就不能再改變它了。


第4章 基本概念
()對象  記住,Python把在程式中用到的任何東西都稱為 對象 。
   使用變數時只需要給它們賦一個值。不需要聲明或定義數據類型。
  
()縮進  空白在Python中是重要的。事實上行首的空白是重要的。它稱為縮進。
        這意味著同一層次的語句必須有相同的縮進。每一組這樣的語句稱為一個塊
       
        NOTE: 如何縮進
不要混合使用製表符和空格來縮進,因為這在跨越不同的平臺的時候,無法正常工作。我 強烈建議 你在每個縮進層次使用 單個製表符 或 兩個或四個空格 。
選擇這三種縮進風格之一。更加重要的是,選擇一種風格,然後一貫地使用它,即 只 使用這一種風格。

() python 中的 if 條件語句是沒有括弧的,if 後要有冒號:
   elif 是相當於else if
   Python 的註釋是用#開頭的
() 在Python中沒有switch語句。你可以使用if..elif..else語句來完成同樣的工作(在某些場合,使用字典會更加快捷。)

()for迴圈
    for..in是另外一個迴圈語句,它在一序列的對象上 遞歸 即逐一使用隊列中的每個項目。我們會在後面的章節中更加詳細地學習序列
   
()內建的range函數
    range返回一個序列的數。這個序列從第一個數開始到第二個數為止。例如,range(1,5)給出序列[1, 2, 3, 4]。預設地,range的步長為1。
    如果我們為range提供第三個數,那麼它將成為步長。例如,range(1,5,2)給出[1,3]。記住,range 向上 延伸到第二個數,即它不包含第二個數。
    記住,for..in迴圈對於任何序列都適用。
   
()len函數

第7章 函數

函數通過def關鍵字定義。def關鍵字後跟一個函數的 標識符 名稱,然後跟一對圓括弧。圓括弧之中可以包括一些變數名,該行以冒號結尾。接下來是一塊語句,它們是函數體。

例7.2 使用函數形參

複製代碼 #!/usr/bin/python
#
 Filename: func_param.py

def printMax(a, b):
    
if a > b:
        
print a, 'is maximum'
    
else:
        
print b, 'is maximum'

printMax(
34# directly give literal values

= 5
= 7

printMax(x, y) 
# give variables as arguments 複製代碼


()局部變數
    當你在函數定義內聲明變數的時候,它們與函數外具有相同名稱的其他變數沒有任何關係,即變數名稱對於函數來說是 局部 的。這稱為變數的 作用域 。所有變數的作用域是它們被定義的塊,從它們的名稱被定義的那點開始。
   
   
()預設參數值
對於一些函數,你可能希望它的一些參數是 可選 的,如果用戶不想要為這些參數提供值的話,這些參數就使用預設值。這個功能藉助於預設參數值完成。你可以在函數定義的形參名後加上賦值運算符(=)和預設值,從而給形參指定預設參數值。

註意,預設參數值應該是一個參數。更加準確的說,預設參數值應該是不可變的
例7.5 使用預設參數值:

複製代碼 #!/usr/bin/python
#
 Filename: func_default.py

def say(message, times = 1):
    
print message * times

say(
'Hello')
say(
'World'5)
複製代碼



重要:
只有在形參表末尾的那些參數可以有預設參數值,即你不能在聲明函數形參的時候,先聲明有預設值的形參而後聲明沒有預設值的形參。


關鍵參數  如果你的某個函數有許多參數,而你只想指定其中的一部分,那麼你可以通過命名來為這些參數賦值——這被稱作 關鍵參數 ——我們使用名字(關鍵字)而不是位置(我們前面所一直使用的方法)來給函數指定實參。

這樣做有兩個 優勢 ——一,由於我們不必擔心參數的順序,使用函數變得更加簡單了。二、假設其他參數都有預設值,我們可以只給我們想要的那些參數賦值。
例7.6 使用關鍵參數

複製代碼 #!/usr/bin/python
#
 Filename: func_key.py

def func(a, b=5, c=10):
    
print 'a is', a, 'and b is', b, 'and c is', c

func(
37)
func(
25, c=24)
func(c
=50, a=100)
複製代碼




return語句
return語句用來從一個函數 返回 即跳出函數。我們也可選從函數 返回一個值 。
例7.7 使用字面意義上的語句

複製代碼 #!/usr/bin/python
#
 Filename: func_return.py

def maximum(x, y):
    
if x > y:
        
return x
    
else:
        
return y

print maximum(23) 複製代碼



()DocStrings
Python有一個很奇妙的特性,稱為 文檔字元串 ,它通常被簡稱為 docstrings 。DocStrings是一個重要的工具,由於它幫助你的程式文檔更加簡單易懂,你應該儘量使用它。你甚至可以在程式運行的時候,從函數恢覆文檔字元串!
例7.8 使用DocStrings

複製代碼 #!/usr/bin/python
#
 Filename: func_doc.py

def printMax(x, y):
    
'''Prints the maximum of two numbers.

    The two values must be integers.
'''
    x 
= int(x) # convert to integers, if possible
    y = int(y)

    
if x > y:
        
print x, 'is maximum'
    
else:
        
print y, 'is maximum'

printMax(
35)
print printMax.__doc__
複製代碼


在函數的第一個邏輯行的字元串是這個函數的 文檔字元串 。註意,DocStrings也適用於模塊和類,我們會在後面相應的章節學習它們。

文檔字元串的慣例是一個多行字元串,它的首行以大寫字母開始,句號結尾。第二行是空行,從第三行開始是詳細的描述。 強烈建議 你在你的函數中使用文檔字元串時遵循這個慣例。

你可以使用__doc__(註意雙下劃線)調用printMax函數的文檔字元串屬性(屬於函數的名稱)。請記住Python把 每一樣東西 都作為對象,包括這個函數。我們會在後面的類一章學習更多關於對象的知識。

如果你已經在Python中使用過help(),那麼你已經看到過DocStings的使用了!它所做的只是抓取函數的__doc__屬性,然後整潔地展示給你。你可以對上面這個函數嘗試一下——只是在你的程式中包括help(printMax)。記住按q退出help。

自動化工具也可以以同樣的方式從你的程式中提取文檔。因此,我 強烈建議 你對你所寫的任何正式函數編寫文檔字元串。隨你的Python發行版附帶的pydoc命令,與help()類似地使用DocStrings。



第8章 模塊

模塊基本上就是一個包含了所有你定義的函數和變數的文件。為了在其他程式中重用模塊,模塊的文件名必須以.py為擴展名。

()學習如何使用標準庫模塊
    使用sys模塊
    例8.1 使用sys模塊

複製代碼         #!/usr/bin/python
        # Filename: using_sys.py

        
import sys

        
print 'The command line arguments are:'
        
for i in sys.argv:
            
print i

        
print '\n\nThe PYTHONPATH is', sys.path, '\n'
       
複製代碼


       
首先,我們利用import語句 輸入 sys模塊。基本上,這句語句告訴Python,我們想要使用這個模塊。sys模塊包含了與Python解釋器和它的環境有關的函數。

()from..import語句
如果你想要直接輸入argv變數到你的程式中(避免在每次使用它時打sys.),那麼你可以使用from sys import argv語句。如果你想要輸入所有sys模塊使用的名字,那麼你可以使用from sys import *語句。這對於所有模塊都適用。一般說來,應該避免使用from..import而使用import語句,因為這樣可以使你的程式更加易讀,也可以避免名稱的衝突。

()製造你自己的模塊
創建你自己的模塊是十分簡單的,你一直在這樣做!每個Python程式也是一個模塊。你已經確保它具有.py擴展名了。下麵這個例子將會使它更加清晰。
例8.3 如何創建你自己的模塊

複製代碼 #!/usr/bin/python
#
 Filename: mymodule.py

def sayhi():
    
print 'Hi, this is mymodule speaking.'

version 
= '0.1'

# End of mymodule.py
複製代碼



上面是一個 模塊 的例子。你已經看到,它與我們普通的Python程式相比並沒有什麼特別之處。我們接下來將看看如何在我們別的Python程式中使用這個模塊。
記住這個模塊應該被放置在我們輸入它的程式的同一個目錄中,或者在sys.path所列目錄之一。

調用:

import mymodule

mymodule.sayhi()
print 'Version', mymodule.version



()下麵是一個使用from..import語法的版本。

複製代碼 #!/usr/bin/python
#
 Filename: mymodule_demo2.py

from mymodule import sayhi, version
# Alternative:
#
 from mymodule import *

sayhi()
print 'Version', version 複製代碼



()dir()函數
    你可以使用內建的dir函數來列出模塊定義的標識符。標識符有函數、類和變數。
    e.g.
    import sys
    dir(sys)

第9章 數據結構

()列表
list是處理一組有序項目的數據結構,即你可以在一個列表中存儲一個 序列 的項目。假想你有一個購物列表,上面記載著你要買的東西,你就容易理解列表了。只不過在你的購物表上,可能每樣東西都獨自占有一行,而在Python中,你在每個項目之間用逗號分割。

()元組
元組和列表十分類似,只不過元組和字元串一樣是 不可變的 即你不能修改元組。元組通過圓括弧中用逗號分割的項目定義。元組通常用在使語句或用戶定義的函數能夠安全地採用一組值的時候,即被使用的元組的值不會改變。
例9.2 使用元組

複製代碼 #!/usr/bin/python
#
 Filename: using_tuple.py

zoo 
= ('wolf''elephant''penguin')
print 'Number of animals in the zoo is', len(zoo)

new_zoo 
= ('monkey''dolphin', zoo)
print 'Number of animals in the new zoo is', len(new_zoo)
print 'All animals in new zoo are', new_zoo
print 'Animals brought from old zoo are', new_zoo[2]
print 'Last animal brought from old zoo is', new_zoo[2][2] 複製代碼



()字典
字典類似於你通過聯繫人名字查找地址和聯繫人詳細情況的地址簿,即,我們把鍵(名字)和值(詳細情況)聯繫在一起。註意,鍵必須是唯一的,就像如果有兩個人恰巧同名的話,你無法找到正確的信息。

註意,你只能使用不可變的對象(比如字元串)來作為字典的鍵,但是你可以不可變或可變的對象作為字典的值。基本說來就是,你應該只使用簡單的對象作為鍵。

鍵值對在字典中以這樣的方式標記:d = {key1 : value1, key2 : value2 }。註意它們的鍵/值對用冒號分割,而各個對用逗號分割,所有這些都包括在花括弧中。

記住字典中的鍵/值對是沒有順序的。如果你想要一個特定的順序,那麼你應該在使用前自己對它們排序。
例9.4 使用字典

複製代碼 ab = {       'Swaroop'   : '[email protected]',
             
'Larry'     : '[email protected]',
             
'Matsumoto' : '[email protected]',
             
'Spammer'   : '[email protected]'
     }

print "Swaroop's address is %s" % ab['Swaroop']

# Adding a key/value pair
ab['Guido'= '[email protected]'

# Deleting a key/value pair
del ab['Spammer']

print '\nThere are %d contacts in the address-book\n' % len(ab)
for name, address in ab.items():
    
print 'Contact %s at %s' % (name, address)

if 'Guido' in ab: # OR ab.has_key('Guido')
    print "\nGuido's address is %s" % ab['Guido'] 複製代碼


()序列
列表、元組和字元串都是序列,但是序列是什麼,它們為什麼如此特別呢?序列的兩個主要特點是索引操作符和切片操作符。索引操作符讓我們可以從序列中抓取一個特定項目。切片操作符讓我們能夠獲取序列的一個切片,即一部分序列。
例9.5 使用序列

複製代碼 #!/usr/bin/python
#
 Filename: seq.py

shoplist 
= ['apple''mango''carrot''banana']

# Indexing or 'Subscription' operation
print 'Item 0 is', shoplist[0]
print 'Item 1 is', shoplist[1]
print 'Item 2 is', shoplist[2]
print 'Item 3 is', shoplist[3]
print 'Item -1 is', shoplist[-1]
print 'Item -2 is', shoplist[-2]

# Slicing on a list
print 'Item 1 to 3 is', shoplist[1:3]
print 'Item 2 to end is', shoplist[2:]
print 'Item 1 to -1 is', shoplist[1:-1]
print 'Item start to end is', shoplist[:]

# Slicing on a string
name = 'swaroop'
print 'characters 1 to 3 is', name[1:3]
print 'characters 2 to end is', name[2:]
print 'characters 1 to -1 is', name[1:-1]
print 'characters start to end is', name[:]
複製代碼


索引同樣可以是負數,在那樣的情況下,位置是從序列尾開始計算的。因此,shoplist[-1]表示序列的最後一個元素而shoplist[-2]抓取序列的倒數第二個項目。

切片操作符是序列名後跟一個方括弧,方括弧中有一對可選的數字,並用冒號分割。註意這與你使用的索引操作符十分相似。記住數是可選的,而冒號是必須的。

切片操作符中的第一個數(冒號之前)表示切片開始的位置,第二個數(冒號之後)表示切片到哪裡結束。如果不指定第一個數,Python就從序列首開始。如果沒有指定第二個數,則Python會停止在序列尾。註意,返回的序列從開始位置 開始 ,剛好在 結束 位置之前結束。即開始位置是包含在序列切片中的,而結束位置被排斥在切片外。



()參考
當你創建一個對象並給它賦一個變數的時候,這個變數僅僅 參考 那個對象,而不是表示這個對象本身!也就是說,變數名指向你電腦中存儲那個對象的記憶體。這被稱作名稱到對象的綁定。
一般說來,你不需要擔心這個,只是在參考上有些細微的效果需要你註意。這會通過下麵這個例子加以說明。
例9.6 對象與參考

複製代碼 #!/usr/bin/python
#
 Filename: reference.py

print 'Simple Assignment'
shoplist 
= ['apple''mango''carrot''banana']
mylist 
= shoplist # mylist is just another name pointing to the same object!

del shoplist[0]

print 'shoplist is', shoplist
print 'mylist is', mylist
# notice that both shoplist and mylist both print the same list without
#
 the 'apple' confirming that they point to the same object

print 'Copy by making a full slice'
mylist 
= shoplist[:] # make a copy by doing a full slice
del mylist[0] # remove first item

print 'shoplist is', shoplist
print 'mylist is', mylist
# notice that now the two lists are different 複製代碼

NOTE:
你需要記住的只是如果你想要複製一個列表或者類似的序列或者其他複雜的對象(不是如整數那樣的簡單 對象 ),那麼你必須使用切片操作符來取得拷貝。如果你只是想要使用另一個變數名,兩個名稱都 參考 同一個對象,那麼如果你不小心的話,可能會引來各種麻煩。

()更多字元串的內容
你是否知道字元串也是對象,同樣具有方法。這些方法可以完成包括檢驗一部分字元串和去除空格在內的各種工作。
你在程式中使用的字元串都是str類的對象。這個類的一些有用的方法會在下麵這個例子中說明。如果要瞭解這些方法的完整列表,請參見help(str)。
例9.7 字元串的方法

複製代碼 #!/usr/bin/python
#
 Filename: str_methods.py

name 
= 'Swaroop' # This is a string object

if name.startswith('Swa'):
    
print 'Yes, the string starts with "Swa"'

if 'a' in name:
    
print 'Yes, it contains the string "a"'

if name.find('war'!= -1:
    
print 'Yes, it contains the string "war"'

delimiter 
= '_*_'
mylist 
= ['Brazil''Russia''India''China']
print delimiter.join(mylist)
複製代碼


我們看到使用了許多字元串方法。startwith方法是用來測試字元串是否以給定字元串開始。in操作符用來檢驗一個給定字元串是否為另一個字元串的一部分。
find方法用來找出給定字元串在另一個字元串中的位置,或者返回-1以表示找不到子字元串。str類也有以一個作為分隔符的字元串join序列的項目的整潔的方法,它返回一個生成的大字元串。




第10章 解決問題——編寫一個Python腳本

  01) 問題
        我提出的問題是: 我想要一個可以為我的所有重要文件創建備份的程式。
       
  02) 解決方案
    例10.1 備份腳本——版本一

複製代碼 #!/usr/bin/python
#
 Filename: backup_ver1.py

import os
import time

# 1. The files and directories to be backed up are specified in a list.
source = ['/home/swaroop/byte''/home/swaroop/bin']
# If you are using Windows, use source = [r'C:\Documents', r'D:\Work'] or something like that

# 2. The backup must be stored in a main backup directory
target_dir = '/mnt/e/backup/' # Remember to change this to what you will be using

# 3. The files are backed up into a zip file.
#
 4. The name of the zip archive is the current date and time
target = target_dir + time.strftime('%Y%m%d%H%M%S'+ '.zip'

# 5. We use the zip command (in Unix/Linux) to put the files in a zip archive
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))

# Run the backup
if os.system(zip_command) == 0:
    
print 'Successful backup to', target
else:
    
print 'Backup FAILED'
複製代碼


   
   
   
   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.【開源】C#跨平臺物聯網通訊框架ServerSuperIO(SSIO) 2.應用SuperIO(SIO)和開源跨平臺物聯網框架ServerSuperIO(SSIO)構建系統的整體方案 3.C#工業物聯網和集成系統解決方案的技術路線(數據源、數據採集、數據上傳與接收、ActiveMQ、Mongod ...
  • [源碼下載] 背水一戰 Windows 10 (10) - 資源: StaticResource, ThemeResource 作者:webabcd介紹背水一戰 Windows 10 之 資源 StaticResource ThemeResource 示例1、演示“StaticResource”相關 ...
  • 最近遇到了一個非常邪門的故障,重新安裝了Windows2008伺服器後 Mp4無法正常播放; 整個互聯網中關於設置MP4的方法基本都是教你如何在IIS中設置MIME 本文討論的不是如何教你設置MIME,如果當你配置完MIME後仍然無法播放MP4,那麼您就要檢查一下是否安裝了《安全狗》軟體。 當前時間 ...
  • Linq的delegate表達式,Insus.NET覺得它封裝得好,讓開發時簡化了很多代碼,而且容易閱讀與檢索。 比如,我們需要計算優惠給客戶金額,打85%折,可以這樣寫: using System; using System.Collections.Generic; using System.Li ...
  • 在ASP.NET MVC 小牛之路系列中,前面用了一篇文章提了一下C#的一些知識點。照此,ASP.NET MVC 大牛之路系列也先給大家普及一下C#.NET中的高級知識點。每個知識點不太會過於詳細,但足矣。要深入研究還需要去查看更多的專業資料。 要成為大牛,必然要有扎實的基本功,不然時間再長項目再多 ...
  • 因為公司有多個伺服器,要檢查磁碟的使用情況確定程式放哪個伺服器和清理垃圾,所以寫個小程式幫忙檢查。 效果圖: 後臺代碼: ...
  • 近乎的Ajax控制項介紹,代碼下載:http://www.jinhusns.com/Products/Download?type=whp AjaxForm 概述 功能說明 基於 ajaxForm 插件進行構建,可以使表單通過ajax的方式進行提交,並擴展了以下功能: 1.通過Html.BeginAja ...
  • 昨天在手機端測試自己的項目遇到如下情況。 1.在手機上(蘋果qq瀏覽器),登陸時存在session中的圖片驗證碼結果,一直獲取不到,考慮是cookies的問題。但是其他網站有貌似可以正常使用cookies,這是第一點矛盾。 2.在平板上(安卓qq瀏覽器),一直可以正常使用session,證明cook ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...