1. 程式人生 > >python入門與進階篇(四)之包、模組、函式與變數作用域

python入門與進階篇(四)之包、模組、函式與變數作用域

python專案的組織結構

(資料夾)-->模組(檔案)-->-->函式和變數  

seven.c4、six.c4:(seven)包名.模組名(c4) 構成名稱空間

seven包的結構:

seven

   --t(子包)

       -- __init__.py  (成為一個包必需的檔案)

      --c5.py

   -- __init__.py  (成為一個包必需的檔案)

  --c1.py

  --c2.py

  --c3.py

 --c4.py

 --c6.py

import 匯入模組

c5:  a=1

c2: import t.c5 as m

     print(m.a)  # 1

# import 匯入模組名   as 改變模組名
# import t.c3 as m
# print(m.a)

# from t.c3 import a  從c3模組下匯入a變數   
# * 代表所有c3中 __all__=['a','b'] 匯出的變數 預設是所有變數

from t.c3 import *
print(a)
print(b)
print(c)

''' 結果:
1
2
Traceback (most recent call last):
  File "D:\前端\python視訊\python\one\c2.py", line 11, in <module>
    print(c)
NameError: name 'c' is not defined
'''

t子包 __init__.py: 包管理

import sys

import io

import datetime

c6中匯入 

import t

print(t.sys.path)

包和模組是不會重複匯入的,避免迴圈匯入模組

函式

內建函式:

round() 四捨五入保留幾位小數

a=1.12386
result=round(a,2)
print(result)  # 1.12

檢視python內建函式 python-->回車-->help(print)-->more-->回車

自定義函式

def fun(parame_list):

   pass

1.def關鍵字定義一個函式             js 直接function fun(){} 或者var fun=function(){}

2.parame_list引數列表可以沒有

3.沒有return 預設返回None                  js 返回null

4.python函式的定義需放在呼叫之前    js 有函式宣告提升

5.使用函式名呼叫 fun()

6.函式可以返回多個值 構成一個元組      js只能有一個返回值

7.必需引數 skill1和skill2                         js引數可以不是必需引數

8.關鍵字引數 呼叫時不需要記住引數的順序 如damage(skill2=6,skill1=1)               js沒有關鍵字引數這個說話

9.可以設定預設引數 定義和呼叫時預設引數都放在後面

def damage(skill1,skill2):
    damage1=skill1*3
    damage2=skill2*3+2
    return damage1,damage2

# <class 'tuple'>
print( type(damage(3,6)) )

# 序列解包
skill1_damage,skill2_damage=damage(3,6)
print(skill1_damage)   #9
print(skill2_damage)   #20

序列解包

a,b,c=1,2,3
d='345'  # ['3','4','5']  '3','4','5'
e,f,g=d
print(a)  #1
print(b)  #2
print(c)  #3
print(e)  #3
print(f)  #4
print(g)  #5