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

# c3: __all__=['a','b'] a,b,c=1,2,3
# 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

變量的作用域


a=1  # 全局變量
def add():
    a=3      # 局部變量  函數內部無法更改全局變量 但是在函數內可以訪問全局變量
    print(a)

add()   # 3
print(a) # 1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章