變量:在Python中,存儲一個數據,須要一個叫作變量
的東西 num2 = 87 #num2是一個變量
html
變量的類型:python
程序中爲了更充分的利用內存空間以及更有效率的管理內存,變量是有不一樣的類型的,以下所示:shell
輸入:python3版本中 input python2中raw_input()express
輸出:print編程
內置對象,自定義對象,實列化數據結構
關鍵字:python一些具備特殊功能的標示符,這就是所謂的關鍵字閉包
關鍵字,是python已經使用的了,因此不容許開發者本身定義和關鍵字相同的名字的標示符函數式編程
一、 數字:用於存儲數值。包括整型(Int),長整型(long integers) ,浮點型(floating point real values),複數(complex numbers)
函數
二、 布爾值 真或假 1 或 0工具
三、 字符串 :雙引號或者單引號中的數據,就是字符串
字符串經常使用功能:
四、 列表:列表使用方括號——[]
基本操做:
五、元祖 :元組的元素不能修改。元組使用小括號——()組建立很簡單,只須要在括號中添加元素,並使用逗號隔開便可
基本操做:
六、字典(無序):字典的每一個鍵值 key=>value 對用冒號 : 分割,每一個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中
經常使用操做:
經過for ... in ...:的語法結構,咱們能夠遍歷字符串、列表、元組、字典等數據結構。
注意python語法的縮進
>>> a_str = "hello itcast" >>> for char in a_str: ... print(char,end=' ') ... h e l l o i t c a s t
>>> a_list = [1, 2, 3, 4, 5] >>> for num in a_list: ... print(num,end=' ') ... 1 2 3 4 5
>>> a_turple = (1, 2, 3, 4, 5) >>> for num in a_turple: ... print(num,end=" ") 1 2 3 4 5
<2> 遍歷字典的value(值)
<3> 遍歷字典的項(元素)
<4> 遍歷字典的key-value(鍵值對)
可變類型,值能夠改變:
不可變類型,值不能夠改變:
需求1、用戶登錄驗證
# 提示輸入用戶名和密碼
# 驗證用戶名和密碼
# 若是錯誤,則輸出用戶名或密碼錯誤
# 若是成功,則輸出 歡迎,XXX!
# 根據用戶輸入內容打印其權限
# alex --> 超級管理員
# eric --> 普通管理員
# tony,rain --> 業務主管
# 其餘 --> 普通用戶
1:while循環
while
條件:
# 若是條件爲假,那麼循環體不執行
break用於退出全部循環
三、continue
continue用於退出當前循環,繼續下一次循環
python內置函數
Python包含了如下內置函數
序號 | 方法 | 描述 |
---|---|---|
1 | cmp(item1, item2) | 比較兩個值 |
2 | len(item) | 計算容器中元素個數 |
3 | max(item) | 返回容器中元素最大值 |
4 | min(item) | 返回容器中元素最小值 |
5 | del(item) | 刪除變量 |
注意:cmp在比較字典數據時,先比較鍵,再比較值。
注意:len在操做字典數據時,返回的是鍵值對個數。
del有兩種用法,一種是del加空格,另外一種是del()
def 函數名(參數):
...
函數體
...
返回值
|
函數的定義主要有以下要點:
定義了函數以後,就至關於有了一個具備某些功能的代碼,想要讓這些代碼可以執行,須要調用它
調用函數很簡單的,經過 函數名() 便可完成調用
示例以下:
def add2num(a, b): c = a+b print c
以調用上面的add2num(a, b)函數爲例:
def add2num(a, b): c = a+b print c add2num(11, 22) #調用帶有參數的函數時,須要在小括號中,傳遞數據
若是一個函數返回了一個數據,那麼想要用這個數據,那麼就須要保存
函數根據有沒有參數,有沒有返回值,能夠相互組合,一共有4種
此類函數,不能接收參數,也沒有返回值,通常狀況下,打印提示燈相似的功能,使用這類的函數
此類函數,不能接收參數,可是能夠返回某個數據,通常狀況下,像採集數據,用此類函數
此類函數,能接收參數,但不能夠返回數據,通常狀況下,對某些變量設置數據而不需結果時,用此類函數
此類函數,不只能接收參數,還能夠返回某個數據,通常狀況下,像數據處理並須要結果的應用,用此類函數
一個函數裏面又調用了另一個函數,這就是所謂的函數嵌套調用
以下圖所示:
若是一個變量,既能在一個函數中使用,也能在其餘的函數中使用,這樣的變量就是全局變量
全局變量
global
進行聲明,不然出錯強龍不壓地頭蛇
調用函數時,缺省參數的值若是沒有傳入,則被認爲是默認值
有時可能須要一個函數能處理比當初聲明時更多的參數。這些參數叫作不定長參數,聲明時不會命名。
基本語法以下:
def functionname([formal_args,] *args, **kwargs): "函數_文檔字符串" function_suite return [expression]
加了星號(*)的變量args會存放全部未命名的變量參數,args爲元組;而加**的變量kwargs會存放命名參數,即形如key=value的參數, kwargs爲字典。
Python中函數參數是引用傳遞(注意不是值傳遞)。對於不可變類型,因變量不能修改,因此運算不會影響到變量自身;而對於可變類型來講,函數體中的運算有可能會更改傳入的參數變量。
def 函數名(): 語句
def 函數名(): 語句 return 須要返回的數值
注意:
def 函數名(形參列表): 語句
注意:
def 函數名(形參列表): 語句 return 須要返回的數值
函數名([實參列表])
經過前面的學習知道一個函數能夠調用其餘函數。
若是一個函數在內部不調用其它的函數,而是本身自己的話,這個函數就是遞歸函數。
什麼是閉包:內部函數對外部函數做⽤域⾥變量的引⽤(⾮全局變量),則稱內部函數爲 閉包。
閉包思考:
1.閉包似優化了變量,原來須要類對象完成的⼯做,閉包也能夠完成 2.因爲閉包引⽤了外部函數的局部變量,則外部函數的局部變量沒有及時釋放,消耗內存
用lambda關鍵詞能建立小型匿名函數。這種函數得名於省略了用def聲明函數的標準步驟。
lambda函數的語法只包含一個語句,以下:
lambda [arg1 [,arg2,.....argn]]:expression
以下實例:
sum = lambda arg1, arg2: arg1 + arg2 #調用sum函數 print "Value of total : ", sum( 10, 20 ) print "Value of total : ", sum( 20, 20 )
以上實例輸出結果:
Value of total : 30 Value of total : 40
Lambda函數能接收任何數量的參數但只能返回一個表達式的值
匿名函數不能直接調用print,由於lambda須要一個表達式
說的通俗點:模塊就比如是工具包,要想使用這個工具包中的工具(就比如函數),就須要導入這個模塊
在Python中用關鍵字import
來引入某個模塊,好比要引用模塊math,就能夠在文件最開始的地方用import math來引入。
形如:
import module1,mudule2...
當解釋器遇到import語句,若是模塊在當前的搜索路徑就會被導入。
在調用math模塊中的函數時,必須這樣引用:
模塊名.函數名
有時候咱們只須要用到模塊中的某個函數,只須要引入該函數便可,此時能夠用下面方法實現:
from 模塊名 import 函數名1,函數名2....
不只能夠引入函數,還能夠引入一些全局變量、類等
注意:
經過這種方式引入的時候,調用函數時只能給出函數名,不能給出模塊名,可是當兩個模塊中含有相同名稱函數的時候,後面一次引入會覆蓋前一次引入。也就是說假如模塊A中有函數function( ),在模塊B中也有函數function( ),若是引入A中的function在先、B中的function在後,那麼當調用function函數的時候,是去執行模塊B中的function函數。
若是想一次性引入math中全部的東西,還能夠經過from math import *來實現
Python的from語句讓你從模塊中導入一個指定的部分到當前命名空間中
語法以下:
from modname import name1[, name2[, ... nameN]]
例如,要導入模塊fib的fibonacci函數,使用以下語句:
from fib import fibonacci
把一個模塊的全部內容全都導入到當前的命名空間也是可行的,只需使用以下聲明:
from modname import *
In [1]: import time as tt In [2]: time.sleep(1)
當你導入一個模塊,Python解析器對模塊位置的搜索順序是:
在Python中,每一個Python文件均可以做爲一個模塊,模塊的名字就是文件的名字。
好比有這樣一個文件test.py,在test.py中定義了函數add
test.py
def add(a,b): return a+b
那麼在其餘文件中就能夠先import test,而後經過test.add(a,b)來調用了,固然也能夠經過from test import add來引入
main.py
import test result = test.add(11,22) print(result)
在實際開中,當一個開發人員編寫完一個模塊後,爲了讓模塊可以在項目中達到想要的效果,這個開發人員會自行在py文件中添加一些測試信息,例如:
test.py
def add(a,b): return a+b # 用來進行測試 ret = add(12,22) print('int test.py file,,,,12+22=%d'%ret)
若是此時,在其餘py文件中引入了此文件的話,想一想看,測試的那段代碼是否也會執行呢!
main.py
import test result = test.add(11,22) print(result)
__all__
__all__
__all__
__init__.py
文件__init__.py
文件中寫入
__init__.py
文件,那麼這個文件夾就稱之爲包
__init__.py
文件有什麼用__init__.py
控制着包的導入行爲
__init__.py
爲空僅僅是把這個包導入,不會導入包中的模塊
__all__
在__init__.py
文件中,定義一個__all__
變量,它控制着 from 包名 import *時導入的模塊
__init__.py
文件中編寫內容能夠在這個文件中編寫語句,當導入時,這些語句就會被執行
__init__.py文件
python setup.py install
注意:
python setup.py install --prefix=安裝路徑
在程序中,使用from import 便可完成對安裝的模塊使用
from 模塊名 import 模塊名或者*