天天看點

章節3 Python中函數與子產品

課時11 函數的定義

格式:

       def func_name:

              function

       i.e.  def add(a,b):

                     return a+b

函數名稱不能使用系統内置的關鍵字。

代碼

def add(a,b):

       return a+b

print add(1,2)

課時12 形式參數與實際參數的介紹

a和b是函數的形式參數

函數的調用方法:func(parama)

課時13 函數的預設參數

Null None的差別

null是指什麼都沒有,none是指有占位符。

預設參數與實際參數都有,按實際參數來。

課時14 形式參數與預設參數的混合應用

當混用時,def定義時,必須形式參數在前,預設參數在後。

這樣,調用的時候可以隻填形參代表的參數。

課時15 函數的傳回值應用

為什麼函數定義時,用return。

ui:元素的定位

api: token,session的擷取

cookie session token差別

cookie一個非常具體的東西,指的就是浏覽器裡面能永久存儲的一種資料,僅僅是浏覽器實作的一種資料存儲功能。

session伺服器給每個用戶端配置設定不同的“身份辨別”,然後用戶端每次向伺服器發請求的時候,都帶上這個“身份辨別”,伺服器就知道這個請求來自于誰了。至于用戶端怎麼儲存這個“身份辨別”,可以有很多種方式,對于浏覽器用戶端,大家都預設采用 cookie 的方式。session存放伺服器。

token:基于Token的身份驗證的過程如下:

1.使用者通過使用者名和密碼發送請求。

2.程式驗證。

3.程式傳回一個簽名的token 給用戶端。

4.用戶端儲存token,并且每次用于每次發送請求。

5.服務端驗證token并傳回資料。

伺服器不儲存session id 了, 我隻是生成token , 然後驗證token ,  我用我的CPU計算時間擷取了我的session 存儲空間 !

代碼

def function1():

   return 'result'

def function(x):

   if x=='result1':

      print 'ok'

   else:

      print 'not ok'

function(function1())

課時16 函數實戰(注冊功能的實作)

寫一個注冊功能

def registere():

   '''注冊功能,根據使用者輸入的使用者名、密碼,自動儲存到指定的文本中'''

   username = raw_input('請輸入您想要注冊的使用者名')

   password = raw_input('請輸入您的密碼')

   temp = username + '|'+ password

   with open('info.txt','w') as f:

      f.write(temp)

registere()

寫登入功能

def login():

   '''

   使用者登入系統

   :return: True 登入成功 False 登入失敗

   '''

   f = open('info.txt','r')

   list = f.read().split('|')

   print list,'username:'+list[0],'password:'+list[1]

login()

print裡面+号以及逗号不同之處,逗号在輸出的時候是個空格,+号沒空格。

課時17 函數實戰(登入功能的實作)

def login():

   '''

   使用者登入系統

   :return: True 登入成功 False 登入失敗

   '''

   f = open('info.txt','r')

   list = f.read().split('|')

   username = raw_input(u"請輸入您的使用者名")

   password = raw_input(u"請輸入您的密碼")

   if username==list[0] and password==list[1]:

      print 'login pass'

      return True

   else:

      print 'login fail'

      return False

課時18 函數實戰(擷取使用者資訊)

def getLoginInfo():

   '''得到使用者登入成功的傳回資訊'''

   f = open('info.txt', 'r')

   list = f.read().split('|')

   if login():

      print u'恭喜{0}登入成功,歡迎回來'.format(list[0])

   else:

      print False

getLoginInfo()

課時19 函數實戰(主程式的實作)

def registere():

   '''注冊功能,根據使用者輸入的使用者名、密碼,自動儲存到指定的文本中'''

   username = raw_input('請輸入您想要注冊的使用者名')

   password = raw_input('請輸入您的密碼')

   temp = username + '|'+ password

   with open('info.txt','w') as f:

      f.write(temp)

def login():

   '''

   使用者登入系統

   :return: True 登入成功 False 登入失敗

   '''

   username = raw_input(u"請輸入您的使用者名")

   password = raw_input(u"請輸入您的密碼")

   if username==list[0] and password==list[1]:

      return True

   else:

      return False

def getLoginInfo():

   '''得到使用者登入成功的傳回資訊'''

   print u'恭喜{0}登入成功,歡迎回來'.format(list[0])

def system():

   '''主函數'''

   while True:

      choice = int(raw_input('請選擇,1、注冊 2、登入 3、退出此系統'))

      if choice==1:

         registere()

      elif choice==2:

         resultOfLogin = login()

         if resultOfLogin:

            getLoginInfo()

      elif choice==3:

         print 'fail'

         exit()

      else:

         break

if __name__ == '__main__':

    system()

課時20 函數實作代碼優化

全部代碼

def readfile():

   '''讀取文本中的使用者名以及密碼,傳回一個list清單'''

   fileread = open('info.txt','r')

   list = fileread.read().split('|')

   return list

def registere(username,password):

   '''注冊功能,根據使用者輸入的使用者名、密碼,自動儲存到指定的文本中'''

   temp = username + '|'+ password

   with open('info.txt','w') as f:

      f.write(temp)

def login(username,password):

   '''

   使用者登入系統

   :return: True 登入成功 False 登入失敗

   '''

   list = readfile()

   if username==list[0] and password==list[1]:

      return True

   else:

      return False

def name():

   username = raw_input('請輸入您的使用者名')

   return username

def pw():

   password = raw_input('請輸入您的密碼')

   return password

def getLoginInfo():

   '''得到使用者登入成功的傳回資訊'''

   list = readfile()

   print u'恭喜{0}登入成功,歡迎回來'.format(list[0])

def system():

   '''主函數'''

   while True:

      choice = int(raw_input('請選擇,1、注冊 2、登入 3、退出此系統'))

      if choice==1:

         registere(name(),pw())

      elif choice==2:

         resultOfLogin = login(name(),pw())

         if resultOfLogin:

            getLoginInfo()

         else:

            print 'login fail'

      elif choice==3:

         print 'exit'

         exit()

      else:

         break

if __name__ == '__main__':

    system()

課時21 認識子產品與包

什麼是子產品,子產品就是一個py檔案,一個Python檔案就是一個子產品。

子產品裡面有什麼?

a. 類 b. 函數 c. 變量

包與子產品之間的關系:1對多的關系

Project與包之間關系: 1對多的關系

包與檔案夾的差別是:

1、包下面必須有__init__.py

2、檔案夾下什麼都沒有

課時22 子產品與子產品之間的調用

兩種方式

1、import 調用的子產品

2、from 子產品 import * (或者具體的)

調用函數并使用子產品中的函數

import login

login.system()

但是上面這個方面使用函數的時候需要加上login.system()

使用第2中方式,就直接可以使用system()

課時23 包中子產品之間的調用

兩種方式

1、import 包.子產品

2、from 包.子產品 import 函數

一般也是推薦第2種方式

注意事項:假如有檔案是在原來包獨有的,那麼引用後會出現報錯。

繼續閱讀