""" from module1 import foo foo() from module2 import foo foo() """ import module1 import module2 as m2 import module3 import test1 m2.foo() module1.foo() x = int(input("输入最大求公约数‘x':")) y = int(input("输入'y'")) test1.gys(x, y) """ from module2 import foo from module1 import foo 最终输出hello world 被覆盖了 """
# -*- coding:utf-8 -*-# # -------------------------------------------------------------- # NAME: test # Description: 引用不同模块的同名方法 # 导入自己写的模块时No module named # 解决办法:你可以把Test目录设置为源目录,在目录上右键,然后如下设置 make diceroty as -->source root # Author: xuezy # Date: 2020/6/28 17:20 # -------------------------------------------------------------- import module1 as m1 import module2 as m2 m1.foo() m2.foo()
import os import sys from module1 import foo foo() from module2 import foo foo() if __name__ == '__main__': print(sys.version) print(sys.version_info) print(__file__) print(os.getcwd())
"""" 函数 """ # 在参数名前面的*表示args是一个可变参数 # 即在调用add函数时可以传入0个或多个参数 def add(*args): total = 0 for val in args: total += val return total print(add(1, 2)) from module1 import foo foo() from module2 import foo foo() import module1 as m1 import module2 as m2 m1.foo() m2.foo() import module3 #练习1:实现计算求最大公约数和最小公倍数的函数。 def cal(x, y): (x, y) = (x, y) if x > y else(y, x) for factor in range(x , 0 -1): if x % factor == 0 and y % factor == 0: return factor def lcm(x, y):
# 为避免函数名重复,复用其它python文件中方法,python提供了模块 # 每个python文件都是一个模块,文件名就是模块名。如文件名为xxx.py,那么模块名就是xxx # 导入模块,有两种办法: # 1. 直接导入方法。不推荐!因为如果同时导入多个模块的同名方法,会无法区分 # from module import function from module1 import foo foo() from module2 import foo foo() # 2. 导入模块,使用模块调用方法。模块在导入时可以起别名。推荐!可以避免同名冲突问题 # import module [as alias] import module1 as m1 import module2 as m2 m1.foo() m2.foo() # 如果我们导入的模块除了定义函数之外还有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码 # 事实上我们可能并不希望如此,因此如果我们在模块中编写了执行代码,最好是将这些执行代码放入如下所示的条件中 # 这样的话除非直接运行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是“\_\_main\_\_” # if __name__ == '__main__': # pass
#!/usr/bin/env python # -*- encoding: utf-8 -*- ''' @文件 :testpmodule.py @时间 :2020/08/28 17:59:23 @作者 :江伟 @版本 :1.0 @说明 : 测试不同的module引入相同命名的函数 ''' from module1 import foo import module2 as m2 foo() #输出结果:hello world! m2.foo() #输出结果:goodbye world
def test_foo01(self): x = 10 self.assertEqual(100, module1.foo(x))
def test_foo02(self): x = 12 self.assertEqual(144, module1.foo(x))
def module_test(): m1.foo() m2.foo()
from module1 import foo foo() # 输出hello from module2 import foo # 如果导入的模块除了定义函数之外还中有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码 foo() # 输出goodbye, world! from module3 import foo foo() # 输出goodbye, world!