zoukankan      html  css  js  c++  java
  • python模块导入总结

    python模块导入总结

    模块导入方式

    定义test.py模块

    def print_func():
        print("hello")

    import 语句

    导入模块语法

    import module1[, module2[,... moduleN]]

    引用print_func()函数

    模块名.函数名
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    # 导入模块
    import test
     
    # 现在可以调用模块里包含的函数了
    test.print_func()

     

    from…import 语句

    Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:

    from modname import name1[, name2[, ... nameN]]

    例如,要导入模块 fib 的 fibonacci 函数,使用如下语句:

    from fib import fibonacci

    这个声明不会把整个 fib 模块导入到当前的命名空间中,它只会将 fib 里的 fibonacci 单个引入到执行这个声明的模块的全局符号表。

    from…import* 语句

    把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:

    from modname import *

    这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。

    例如我们想一次性引入 math 模块中所有的东西,语句如下:

    from math import *

    python绝对路径和相对路径

    转自https://blog.csdn.net/databatman/article/details/49453953

    下面的路径介绍针对windows,其他平台的暂时不是很了解。
    
    在编写的py文件中打开文件的时候经常见到下面其中路径的表达方式:
    
    open('aaa.txt')  
    open('/data/bbb.txt')  
    open('D:\user\ccc.txt')  
    这三种表达式里面,前两个都是相对路径,第三个则是绝对路径。绝对路径比较好理解,就是最完整的路径,相对路径的相对则是不完整路径,这个相对指的就是相对于当前文件夹路径,其实就是你编写的这个py文件所放的文件夹路径!也就是说你写的相对路径必须是当前文件夹A里的文件a或者A里的文件夹B里的文件才可以open。
    
    假设当前的py文件夹所处的位置是:D:userpublic
    
    那么三行代码打开的文件所属的路径分别是:
    
    D:userpublicaaa.txt
    
    D:userpublicdatabb.txt
    
    D:userprivateccc.txt
    
    很好理解就是当要打开py文件所处的文件时只要使用相对路径就行了,而要使用其他文件夹的则需使用绝对路径。
    
    注:我们常用’/‘来表示相对路径,’‘来表示绝对路径,上面的路径里\是转义的意思。此外,网页网址和linux、unix系统下一般都用’/‘。
    
    当然我们也可以获得当前文件夹的绝对路径,如下:
    
    import os  
    path1=os.path.abspath('.')   #表示当前所处的文件夹的绝对路径  
    path2=os.path.abspath('..')  #表示当前所处的文件夹上一级文件夹的绝对路径  
    所以我们常设置一个path1的全局变量来表示当前的绝对路径,再加上相对路径来打开需要打开的文件,这么做是为了在不同的平台上不冲突,因为不同平台在相对路径上的表示上存在区别。

    PYTHONPATH 变量

    作为环境变量,PYTHONPATH 由装在一个列表里的许多目录组成。PYTHONPATH 的语法和 shell 变量 PATH 的一样。

    在 Windows 系统,典型的 PYTHONPATH 如下:

    set PYTHONPATH=c:python27lib;
    

    在 UNIX 系统,典型的 PYTHONPATH 如下:

    set PYTHONPATH=/usr/local/lib/python

    搜索路径

    当你导入一个模块,Python 解析器对模块位置的搜索顺序是:

    • 1、当前目录
    • 2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
    • 3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。

    模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

    python中设置PYTHONPATH 变量

    PYTHONPATH是Python中一个重要的环境变量,用于在导入模块的时候搜索路径.可以通过如下方式访问:

    import sys
    
    print(sys.path)
    ['C:\Pycham', 'C:\Pycham', 'C:\Users\Administrator\my_site', 'C:\Users\Administrator\mysite', 'C:\Users\Administrator\test_login', 'C:\Pycham\anaconda\Scripts\python37.zip', 'C:\ProgramData\Anaconda3\DLLs', 'C:\ProgramData\Anaconda3\lib', 'C:\ProgramData\Anaconda3', 'C:\Pycham\anaconda', 'C:\Pycham\anaconda\lib\site-packages', 'C:\ProgramData\Anaconda3\lib\site-packages', 'C:\ProgramData\Anaconda3\lib\site-packages\win32', 'C:\ProgramData\Anaconda3\lib\site-packages\win32\lib', 'C:\ProgramData\Anaconda3\lib\site-packages\Pythonwin']

    路径列表的第一个元素为空字符串,代表的是相对路径下的当前目录.

    由于在导入模块的时候,解释器会按照列表的顺序搜索,直到找到第一个模块,所以优先导入的模块为同一目录下的模块.

    导入模块时搜索路径的顺序也可以改变.这里分两种情况:

    1,通过sys.path.append(),sys.path.insert()等方法来改变,这种方法当重新启动解释器的时候,原来的设置会失效.

    import sys
      sys.path.append('/home/test/')

    2,改变PYTHONPATH,这种设置方法永久有效:

    export PYTHONPATH=$PYTHONPATH:/home/test

    在这种情况下,可以通过在sys.path列表显示的路径中路径来实现:文档

  • 相关阅读:
    POJ2553 The Bottom of a Graph 强连通分量+缩点
    销售里面最猛的还是传销模式
    **Error 1 The type 'System.Web.Compilation.WCFBuildProvider' is ambiguous: it could come from assembly 'C:\Windows\Micro
    自定义Proxy 来做 rest wcf的客户端 与 WebChannelFactory<>的bug
    你知道吗string GetHashCode方法跟环境是有关的吗?
    查找默认的一个实体如果没有就找第一个的写法
    如何解决WCF REST 中 WebFaultException抛出的异常客户端WebChannelFactory无法处理的问题
    Google 的统计或将导致 IE7已终止操作
    类别进行排序的一个简单分析
    抢夺客户的战争
  • 原文地址:https://www.cnblogs.com/-wenli/p/10990748.html
Copyright © 2011-2022 走看看