模块、包与暂时修改文件的绝对路径

学函数是为了避免大量的重复代码~
模块也是如此~但是为了逻辑更清晰一点,不同功能的代码要放到不同的py文件当中,每一个.py文件就是一个模块
模块一共有三种:
1、python标准库
2、第三方模块(比如说pip命令自定义安装模块)
3、程序自定义模块
比如说你在同一个包下创建了2个py文件,一个内容为

def add(x,y):
	return x+y
def sub(x,y):
	return x-y

另一个文件想要使用a文件中的函数时可以使用import来使用文另一个函数中的内容:

import a 
print(a.add(3,5))
#打印出来的内容为8

import会把后面的py文件执行一遍,然后拿给调用它的文件去使用(执行对应文件,引入变量名)
但是如果每次都写a.add很麻烦,所以可以和from搭配使用

from a import sub
print(sub(3,5))
#打印内容为-2

但是如果py文件中有很多函数,就可以用from 文件名 import *来把该文件中所有的函数都拿来用,但是这种方法不推荐使用,因为会执行该文件中所有的函数,所以1、占内存,2、如果import写在了自己定义的函数内,而且自己定义的函数和调用的函数重名,就会覆盖之前的函数:

def add(x,y):
	return x+y+100
from a import add
print(add(3,6))
#结果为9

路径:
如果import不同路径的py文件就不可以调用该文件,但是如果存在于该目录的子目录下的文件这时候可以from子目录包名 import 方法来使用该文件的内容

#比如说我在lesson下创建了个my_module包,包内有一个cal文件,cal中有add方法
from my_module import cal
print(cal.add(3,4))
#计算结果为7

一般的入口函数以bin命名,而逻辑相关的主函数以main命名
还有一个东西叫做if __name__=='__main__':
如果直接打印__name__结果为__main__,但是如果被调用的时候输出了__name__则打印的是被调用的路径
在执行文件中打印就是__name__,在被调用的文件中打印就是当前文件的路径,它的作用就是:1、他放在功能文件中如果被调用,就不会执行用于调用文件和被调用文件的测试。2、如果放到了执行的文件中,含义就是不想让该文件成为被调用文件

在开发时如果想使用其他路径下的内容,但是import不到他的路径,可以使用sys.path.append(r’路径’)写死,但是这样放在其他电脑上就会报错,因为每个人得路径都是不相同的,这时候就可以使用 os模块的os.path.dirname和os.path.abspath方法来向上走一级之后再去调用

import sys,os
BASE_DIR   = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#这里向上走了两级
sys.path.append(BASE_DIR)#把路径加入环境变量当中

from my_module import main#之后再from。。。import。。。就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值