第一部分 入門|第一章 Django Python實戰

Py小五發表於2020-12-23

1. Python基礎

1. 註釋

定義:在程式程式碼中對程式程式碼進行解釋說明的文字。
作用:註釋不是程式,不能被執行,只是對程式程式碼進行解釋說明,讓別人可以看懂程式程式碼的作用,能夠大大增強程式的可讀性。

註釋分為兩類:

  1. 單行註釋:
# 註釋內容
# 既可以位於行首,也可以位於某行的任意位置,#之後的內容為註釋

單行註釋的#號還可以作為指定編碼格式:# -*- coding:utf-8 -*-
  1. 多行註釋:
"""
註釋內容
"""

2. 變數

例子:

>>> a = 'bar'
>>> a
'bar'
>>> a = 1
>>>a
1

該例子中,變數a首先被對映到一個字串物件’bar’上,接著再對映到另一個整數物件1上。
注意:若沒有變數指向’bar’,則’bar‘會被回收(引用計數)

3. 運算子

Python運算子分為:算術運算子、賦值運算子、比較運算子、布林運算子。

算術運算子:

算術運算子
注意:混合運算時,優先順序順序為: ** 高於 * / % // 高於 + - ,為了避免歧義,建議使用 () 來處理運算子優先順序。
並且,不同型別的數字在進行混合運算時,整數將會轉換成浮點數進行運算。

賦值運算子

賦值運算子
(1)單個變數賦值

>>> num = 5
>>> num
5

(2)多個變數賦值

>>> num1, num2, f1 = 100, 200, 'hello'
>>> num1
100
>>> num2
200
>>> f1
'hello'

複合賦值運算子

複合賦值運算子

比較運算子

比較運算子有 >、<、=、>=、<=、!=

邏輯運算子

in、not in,返回True或False。

Python沒有結尾的分號(;),沒有貨幣符號($),在條件語句中也不需要小括號(())。

4. Python標準型別

所有的Python物件都有內在的布林值

物件的布林值

布林值有兩種:True和False。無論其本身的資料值是什麼,所有Python值都可以表示為布林值。舉例來說,任何等於零的數值都被認為是False,而所有非零的數值則為True。類似的,空的容器即為False,非空的容器就為True。
例子:

>>> bool(None, 0)
True

數字

Python有兩個主要的數值型別:int(整數)和float(浮點數)。
浮點數就是和其他語言一樣的 雙精度的浮點實數
有個比較有奇怪的事是:

>>> 1.1
1.1000000000000001

Python在表示有理數的時候不是非常精確。因此還有另一個浮點數型別Decimal(這不是一個內建型別,必須通過decimal模組訪問),它的值範圍比較小,但是更精確。
Python內建數字型別
Python內建數字型別

5. 資料型別轉換

資料型別轉換

6. 函式

1. 宣告和呼叫函式

宣告函式的方法是用 def 關鍵字,然後是函式名以及小括號裡的引數列表(如果無參函式的話只要用一對括號即可)

>>> def foo(x)
...   print x
>>> foo(123)
123

2. (函式呼叫裡的)關鍵字引數

關鍵字引數可以讓函式更加清晰,更加容易使用,同時,也消除了記憶固定引數順序的需要。

關鍵字引數通過 “鍵 = 值” 這樣的形式加以指定:

>>> check_web_server(port=80, path='/', host='www.python.org')

關鍵字引數只能用於 “函式呼叫”。

3. (函式簽名裡的)預設引數

Python函式的另一個特定是可以為引數提供預設值,這樣它們的引數就不是必需要傳的了。

>>> def check_web_server(host, port=80, path='/'):

預設引數用於 “函式宣告”,不能用可變型別(列表、字典)當預設引數。

所有必須提供的引數一定要出現在任何可選引數之前,不能混在一起或顛倒順序。

4. 函式是 first-class的物件

5. 匿名函式和lambda

匿名函式建立的方法是使用 lambda關鍵字,它由一個表示式組成,這個表示式代表了函式的 “返回值”。

這樣的函式沒有名字,因此成為匿名函式。它通常只是一行表示式,一般都是用完就扔。

表示式:一個值,結果一定是一個Python物件,例如42,1+2,int(‘123’),range(10)等;
語句:一段程式碼,結果不是物件,例如if或print語句,for和while迴圈等,它們執行一個動作,而不是返回或生成一個值。

lambda語法:lambda args:表示式

在執行的時候,lambda返回一個可以立即使用的函式物件,或者你可以選擇將它儲存為一個變數,或是儲存為一個回撥函式以便稍後執行。

lambda的一個常見用法就是為 sorted這樣的函式工具提供一個函式物件,它在眾多引數裡有一個key引數,這樣key必須是一個函式,可以用在列表裡的每個都排序的元素上以生成一個值來作為排序的依據。

例如有一個代表人物的複雜物件列表,我們希望按照他們的姓氏屬性來排序的話,則可以這樣:

sorted(list_of_people, key=lambda person: person.last_name)

這是正確的,原因是由於key期望的是一個函式物件,而lambda返回的正好是一個匿名函式。
以下是等價的寫法:

def get_last_name(person):
	return person.last_name
	
sorted(list_of_person, key=get_last_name)

或這樣:

get_last_name = lambda person: person.last_name
sorted(list_of_person, key=get_last_name)

三個語句最大的不同之處在於可讀性和重用性。第一個例子更簡潔同時目的相當明確,通常是解決這類問題最好的手法;第二個例子是一個普通的函式,比較恰當;第三個例子不太現實。

6. (函式呼叫裡的)引數容器

7. (函式簽名裡的)變長引數

*args:元組
**kwargs:字典

8. 裝飾器

Python的裝飾器是一種能改變或是 “裝飾” 函式行為的機制,它能讓函式執行一些和原本設計不同,或是在原有基礎上額外的操作。裝飾器是也可以說是對函式的一個包裝,這些額外的任務包括寫日誌、計時、過濾等。

簡單的語法:

@deco
def foo():
	pass

翻譯過來為:

foo = deco(foo)

9. 正規表示式

Django使用正規表示式的字串匹配機制來定義網站的URL

2. Django 專案

1. 專案目錄介紹

start project命令建立的所有檔案都是Django原始碼檔案。

init.py:把專案目錄變成一個Python的包——相關Python模組的一個集合

manage.py: 同Django專案一起工作的工具,可直接執行

settings.py:專案的預設設定,包括資料庫資訊、除錯狀態,以及其他一些重要的變數。專案中安裝的任何應用都可以訪問settings.py

urls.py:該檔案在Django中叫URLconf,它是將URL模式對映到應用程式上的配置檔案。URLconf是Django裡非常強大的一個特性

相關文章