1. 程式人生 > >Python 入門:基本語法

Python 入門:基本語法

2.7 oop 全路徑 perl 雙引號 one map 基本數據 安裝路徑

對於多數從其他編程語言轉入Python的來說,或多或少會有些不習慣。如果沿用其他編程語言的語法來寫Python代碼,那麽碰壁是不可避免的了。

本文是基於我看了兩個小時的官方文檔(Python 2.7 : https://docs.python.org/2/tutorial/index.html , 至於我學習Python2.x的原因:工作需要),

從中提取的重要的細節,以避免再次踩坑。

先上一個Python文件(Foo.py):

#!python
#-*- coding: utf-8 -*-

‘‘‘
python 的註釋:
    多行註釋: 用成對的3個單引號或者3個雙引號組成 (例如當前位置)
    單行註釋:使用#
‘‘‘ # 定義一個foo函數,用於把指定msg打印 count次 """ params: count: int, 打印的次數 msg: string,消息內容 useFor:多次打印時,是否采用for loop。 raise: ValueError : 當count<0時拋出 """ def foo(count=1, msg=Hello+ + "Foo", useFor=1): if count < 0 : raise ValueError(count < 0
) if useFor : # 0,1 可以用作bool判定 print("print use for, count = " + bytes(count) +" :") for i in range(count): # range(N),會生成一個從0到N的list,恰好可以用作索引 print(msg+ +bytes(i)) else: print("print use while, count = " + bytes(count)+" :") i = 0
while i < count: print(msg+" "+bytes(i)) i+=1 # python中不支持 i++的寫法,支持 i+= 的寫法 if __name__ == __main__ : print(main in Foo.py) foo(2,useFor=1) foo(useFor=0, count=3); foo(-1)

  • 文件頭
    • 指定文件解釋器
    • 指定文件編碼
  • 註釋
  • 代碼塊,縮進
  • 基本數據類型
    • string
    • number
    • boolean
  • 控制語句
    • if, elif, else
    • loop : for, while
  • 程序入口:main 函數

1、文件頭

作為一個腳本語言,文件頭指定一些執行環境等,是很常見的事情。在shell中就很常見的。

那麽對於Python腳本,也有同樣的內容:

1.1 指定解釋器

腳本語言,很常見的配置:

#!/bin/sh           shell腳本
#!/usr/bin/perl     perl腳本
#!/usr/bin/python   python腳本
#!/usr/bin/python3  python3腳本
#!/usr/bin/python2  python2腳本

而有時不太清楚腳本解釋器的具體全路徑名;或者開發環境與運行環境的安裝路徑不同。為了保證兼容性,也可以寫作:
#!/usr/bin/env python3
這樣運行時會自動搜索腳本解釋器的絕對路徑。

1.2 指定文件編碼

py文件的默認編碼是ASCII,上面的腳本中很多都是ASCII不支持的,那麽需要指定文件編碼。格式是:

#-*- coding: encoding -*-

2、註釋

python 的註釋:

    多行註釋: 用成對的3個單引號或者3個雙引號組成 (例如當前位置)
    單行註釋:使用#

3、代碼塊,縮進

代碼塊:從上面的Foo.py文件中,很容易可以看出,代碼塊是以 冒號 : 開始的。不論是function定義,if,else,還是loop(for, while)

都是用 : 作為代碼塊的開始。不是用 { } 來包括代碼塊的。

縮進:Python的程序中,不是用 { } 來包括代碼塊的,用縮進來維持代碼塊的。不是不要寫 tab,用4個空格為縮進。

4、基本數據類型

4.1 String

4.2 Number

4.3 Boolean

類似於JavaScript,Python的boolean也是多變的。

以下幾種情況是false:
1.None
2.False
3.任何類型的數字0,包括0,0.0,0L,0j
4.空的序列(sequence)或者映射(mapping)類型對象
5.對於用戶自定義類型的對象,如果其類定義了__nonzero__() 或者 __len__()特殊方法並且返回False或者0

對於最後一條規則,有幾點需要說明:
1.如果類沒有定義這兩個方法中的任何一個,則這種類型的對象真值測試時總是為True
2.如果類同時定義了__nonzero__() 和 __len__(),只會參考__nonzero__()的返回值

以下幾種情況是false:1.None2.False3.任何類型的數字0,包括0,0.0,0L,0j4.空的序列(sequence)或者映射(mapping)類型對象5.對於用戶自定義類型的對象,如果其類定義了__nonzero__() 或者 __len__()特殊方法並且返回False或者0
對於最後一條規則,有幾點需要說明:1.如果類沒有定義這兩個方法中的任何一個,則這種類型的對象真值測試時總是為True2.如果類同時定義了__nonzero__() 和 __len__(),只會參考__nonzero__()的返回值

Python 入門:基本語法