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