Yuan的學習筆記
作者 Yuan

目錄
- 縮進
- 物件
- 注釋
- 函式和物件方法呼叫
- 變數和引數傳遞
- 動態參考
- 屬性和方法
- 引入import
- 二元運算子
- 可變與不可變物件
- 數值型別
- 字串
- 布林值
- 型別轉換
- 控制流
- 三元運算式
Python語法基礎
在本篇中將概述基本的Python概念和語言機制,
語言的語意
Python的語言設計強調的是可讀性,簡潔和清晰
使用縮進而不是括號
Python使用空白字符(tab和空格)來組織代碼,而不是像其他語言,比如R,C++,JAVA和Perl那樣使用括號,看一個排序演算法的for回圈:
for x in array:
if x in pivot:
less.append(x)
else:
greater.append(x)
冒號標志著縮進代碼塊的開始,冒號之后的所有代碼的縮進量必須相同,直到代碼塊結束,
我很喜歡Python的一點就在這里,用空格代替括號使得整個代碼都簡潔美觀,不會像別的語言那樣可能漏掉括號,大多數人都是使用四個空格,建議你也是,
python的陳述句不需要用分號結尾,但是分號可以用來給同一行的陳述句切分:
a = 5; b = 6; c = 7
不建議將多條陳述句放到一行,會降低代碼的可讀性
萬物皆物件
每個數字,字串,資料結構,函式,類,模塊等,都被認為是Python物件,每個型別都有型別(例如,字串或函式)和內部資料
注釋
任何前面帶有‘#’號的文本都會被Python解釋器忽略
# a = 1
# for i in range(10):
b = 2
你可以通過注釋的方法排除一段代碼但不洗掉
函式和物件方法呼叫
可以用圓括號呼叫函式,傳遞零個或幾個引數,或者將回傳值給一個變數
result = f(x, y, z)
g()
幾乎Python中的每個物件都有附加的函式,稱作方法,可以用來訪問物件的內容
obj.some_method(x, y, z)
obj是物件,some_method是這個物件的方法
函式可以使用位置和關鍵詞引數:
result = f(a, b, c, d=5, e='foo')
a,b,c是位置引數,d,e是關鍵字引數
變數和引數傳遞
在Python中創建變數,你就在等號右邊創建了一個對這個變數的參考,
a = [1, 2, 3]
假設將a賦值給一個新變數b:
b = a
我們把4放入a的串列中
a.append(4)
這時候查看一下b,你會發現b也變成了[1, 2, 3, 4]
你可能會疑惑,我明明只往a里放了4,b里怎么也出現了4,其實在Python中,a和b是同一個物件,即原有串列[1, 2, 3],a和b都參考(系結)了同一個物件,

理解Python的參考含義很重要,知道資料是何時,如何復制的,
當你將物件作為引數傳遞給函式時,新的局域變數創建了對原始物件的參考,而不是復制,因此可以改變可變引數的內容,假設一個函式:
def append_element(some_list, element):
some_list.append(element)#將一個元素添加到some_list中

如果你會c++的指標或參考,應該很好理解;
如果不會的話,你可以這么想,如果你改變了一個變數參考(系結)的物件,那所有參考(系結)這個物件的變數都變了,因為他們都指向同一個物件,
動態參考
與許多編譯語言(如Java和c++)對比,Python中的物件參考不包含附屬的型別,在Python中下面的代碼是沒有問題的:

屬性和方法
Python的物件通常都有屬性(存盤在物件內部的物件)和方法(可以訪問物件內部資料的附屬函式),可以用obj.attribute_name訪問屬性和方法
引入
在Python中,模塊就是有.py擴展名,包含Python代碼的檔案,假設有一個some_module.py檔案
#some_module.py
PI = 3.14159
def f(x):
return x + 2
def g(a, b):
return a + b
如果想從同目錄下的另一個檔案訪問some_mdule.py中定義的變數和函式:
import some_module
result = some_module.f(5)
pi = some_module.PI
或者:
from some_module import f, g, PI
result = g(5, PI)
使用as關鍵詞,可以給引入起不同的變數名
import some_module as sm
from some_module import PI as pi, g as gf
import pandas as pd
二元運算子和比較運算子
大多數都比較簡單,你肯定想的到,直接放表格

可變與不可變物件
Python中大多數物件,比如串列,字典,Numpy陣列和用戶定義的型別都是可變的,其他的,例如字串和元組,不可變
a_tuple = (3, 5, (4, 5))#元組
數值型別
數值型別有整形(int)和浮點型(float),浮點型可以用科學計數法表示
fval = 7.243
fval2 = 6.78e-5
除法和C語言不太一樣:
3 / 2
會得到1.5,如果是兩個斜杠//
3 // 2
則會像c語言一樣拋棄小數部分得到1
字串
Python中的字串比C語言中簡單且靈活許多,可以用單引號或雙引號來寫字串(這也和C語言不一樣)
a = 'one way of writing a string'
b = "another way"
對于要換行的字串,可以用三引號
c = """
This is a longer string
that
spans
"""
將兩個字串合并會產生新的字串

字串物件有format方法,可以替換引數為字串

{0:s}表示第1個引數是字串,{1:d}表示第2個引數是整數,大致說一下,后面還會遇到,
布林值
這個也簡單,True真和False假
型別轉換
str,bool,int和float也可以用來型別轉換

控制流
if, elif 和else
if陳述句檢查條件,滿足則執行后面陳述句
if x < 0:
print('negative)
if后面可以加elif,所有條件不滿足最后可以加else
if x < 0:
print('negative')
elif x == 0:
print('0')
else:
print('>0')
for回圈
for 回圈在一個集合中迭代
sequence = [1, 2, None, 4, None, 5]
for value in sequence:
if value is None:
continue
使用continue可以跳過當前迭代的剩下部分,進行下一輪迭代
sequence = [1, 2, None, 4, None, 5]
for value in sequence:
if value is None:
break
使用break則會跳出for回圈,不僅跳過當前迭代的剩下部分,接下來幾輪迭代也跳過了
while回圈
while回圈指定了條件和代碼,當條件為False時退出回圈
total = 0
while total > 100:
total += 1
pass
意思是什么都不做,代碼塊不需要任何動作時使用
if x > 0:
pass
range
range函式回傳一個迭代器,產生均勻分布的整數序列

range三個引數(起點,終點,步伐大小)

三元運算式
Python中的三元運算式可以將if-else陳述句放到一行里
x = 5
a = 'positive' if x > 0 else 'negative'
下一篇寫的是python的資料結構,另外,過年了,我不介意大家用贊賞瘋狂的砸我哦,祝大家新年快樂,新的一年心想事成圖片!

關注我的微信公眾號,一起學習,一起進步
微信公眾號 知乎 今日頭條:Yuan的學習筆記
作者 Yuan
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/259329.html
標籤:python
上一篇:python NumPy庫基礎
