廖雪峰老师Python教程(第一天)


廖雪峰老师Python教程(第一天)

笔记是参照廖雪峰老师的Python教程来学习的,内容大多都是从官网摘取,具体细节是百度搜索来的

1.Python简介

1.1python

Python:是一种相当高级的计算机程序设计语言,编写少量代码就能完成工作,但代码少的代价是运行速度慢

常见编程语言:非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。

编程语言:都是为了让计算机干活,而计算机干活的CPU只认识机器指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。

操作系统只能用C语言写,写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。

努力,变成优秀的软件架构师

问题一:关于Python分号“;”是否添加问题


Python是著名的“龟叔”Guido van Rossum(是荷兰人)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。

全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种。如果你听说过TIOBE排行榜,你就能知道编程语言的大致流行程度。

推荐学学:JavaScript,TypeScript,Python,汇编和C语言了解下

C语言是可以用来编写操作系统的贴近硬件的语言,所以,C语言适合开发那些追求运行速度、充分发挥硬件性能的程序(C语言是除了汇编语言最贴近硬件交互的一种编程语言,所以运行速度非常快,比如单片机,嵌入式开发都是C语言编写)。而Python是用来编写应用程序的高级编程语言。

Python之所以开发简单,除了语言设计非常简洁,最大的优点便是提供一个非常完善的基础代码库,让你能直接调用,比如,针对电子邮件协议的SMTP库,针对桌面环境的GUI库,在这些已有的代码库的基础上开发是非常方便的。

Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”,同时还有大量的第三方库,也就是别人开发的,供你直接使用的东西。

Python是非常适合初学者入门的一种编程语言,因为浅显易懂。很多美国高校的CS课程也把Python作为入门级的语言。

Python:定位是“优雅”、“明确”、“简单”,适用于开发网络应用,包括网站、后台服务等等;其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;另外就是把其他语言开发的程序再包装起来,方便使用。

缺点:任何编程语言都是有缺点的,

  • 第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。
  • 第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。

安装python

Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,放到Linux上也是能够运行的(这便是解释器的作用了)。

安装python其实就是安装一个解释器,用来对.py程序进行‘解释’,还有一个命令行交互环境,还有一个简单的集成开发环境。

目前python主流的两个版本是:3.X和2.7,旧的项目是2.7写的,需要维护,但3.X版本是未来趋势。这两个版本是严格不兼容的。

在Mac上安装Python

Mac,系统是OS X>=10.9,那么系统自带的Python版本是2.7。

方法一:从Python官网下载Python 3.8的安装程序,下载后双击运行并安装;

方法二:如果安装了Homebrew,直接通过命令brew install python3安装即可。

在Windows上安装Python(推荐!!)

根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.8对应的64位安装程序或32位安装程序,然后,运行下载的exe安装包:

特别要注意勾上Add Python 3.8 to PATH,然后点“Install Now”即可完成安装。

如果没有勾选 Add Python 3.8 to PATH,可以在安装后打开电脑的系统环境变量,将python.exe所在路径以及scripts文件夹添加到环境变量。

运行python

打开cmd命令窗口,输入python,如果打印出Python 3.8.x表示安装以及配置成功。

提示符>>>就表示我们已经在Python交互式环境中了,可以输入任何Python代码,回车后会立刻得到执行结果。现在,输入exit()并回车,就可以退出Python交互式环境(直接关掉命令行窗口也可以)。

切记切记!!在Python中,所有的命令都是用英文书写,包括所有的括号,单引号,双引号,三引号,冒号等等,使用中文一定会报错(在python中不要在语句结束后加分号,python不像其他编程语言需要加分号表示语句结束,而是使用换行表示)

win10安装python3.7.7版本 , cmd 之后,需要在命令行输入 py 会进入python 如果直接在命令行输入python ,则会打开微软商店 去下载python

Python解释器(仅供了解)

当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。

由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。

CPython(推荐)(默认)

当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

2.python中的基础知识总结

3.python中的函数

3.1函数相関概念

  • 面向过程编程:当需要求三个圆的面积时,可以根据公式进行计算,但是如果计算圆比较多时就会有很多重复的代码。
r1 = 12.34
r2 = 9.08
r3 = 73.1
s1 = 3.14 * r1 * r1
s2 = 3.14 * r2 * r2
s3 = 3.14 * r3 * r3
  • 面向函数编程:我们就不再每次写s=3.14* x * x,而是写成更有意义的函数调用s = area_of_circle(x),而函数area_of_circle本身只需要写一次,就可以多次调用。

基本上所有的高级语言都支持函数,这也是从面向过程编程到面向函数编程过渡的思想。(最后还有更加方便的面向对象编程)

Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。

抽象是数学中非常常见的概念,计算数列的和,比如:1 + 2 + 3 + ... + 100,写起来十分不方便,于是数学家发明了求和符号∑,可以把1 + 2 + 3 + ... + 100函数就是最基本的一种代码抽象的方式。

3.2函数的基本使用

3.3函数的参数

3.3.1参数定义规则

定义函数的时候,我们把参数的名字位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。

Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

位置参数(正常普通的参数)
def power(x):
    return x * x

3.4递归函数的学习

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

意义:通过一定的“基”,并按照某种规则达到重复的效果

计算阶乘
n! = 1 x 2 x 3 x ... x n

用函数表示
fact(n)=n!=1×2×3×⋅⋅⋅×(n−1)×n=(n−1)!×n=fact(n−1)×n

下面这个就是一个递归函数
def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

计算过程
===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120


优化后的代码(不会有递归调用栈溢出)
def fact(n):
    return fact_iter(n, 1)

def fact_iter(num, product):
    if num == 1:
        return product
    return fact_iter(num - 1, num * product)
    
计算过程
===> fact_iter(51)
===> fact_iter(45)
===> fact_iter(320)
===> fact_iter(260)
===> fact_iter(1120)
===> 120

递归函数的优点:定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧(对比JavaScript的函数调用的作用域很类似)。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。

尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。

上面的fact(n)函数由于return n * fact(n - 1)引入了乘法表达式,所以就不是尾递归了。要改成尾递归方式,需要多一点代码,主要是要把每一步的乘积传入到递归函数中

尾递归调用时,如果做了优化,栈不会增长,因此,无论多少次调用也不会导致栈溢出。

遗憾的是,大多数编程语言没有针对尾递归做优化,Python解释器也没有做优化,所以,即使把上面的fact(n)函数改成尾递归方式,也会导致栈溢出。

小结 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。

针对尾递归优化的语言可以通过尾递归防止栈溢出。尾递归事实上和循环是等价的,没有循环语句的编程语言只能通过尾递归实现循环。

Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。

问题一:递归函数实现斐波那契数列

4.python高级特性

python基础知识有:数据类型、变量常量、语句和函数。

在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。

代码越少,开发效率越高,但不一定执行效率越高。

4.1切片

4.2迭代

4.3列表生成式

4.4生成器

4.5迭代器

5.函数式编程

5.1函数式编程相关概念

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向函数的程序设计。还有面比较旧的面向过程编程。 函数就是面向函数的程序设计的基本单元。

汇编语言是最贴近计算机的语言。

越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Lisp语言。

函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的(有参数的概念)。

Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。 具体介绍

5.2 高阶函数

5.2.1基本概念

高阶函数英文叫Higher-order function。高阶函数就是以函数作为参数传给另一个函数。

Python内置的求绝对值的函数abs(),加括号是调用,不加括号是函数本身内容。

5.2.2 map/reduce

5.2.3 filter

5.2.4 sorted

6.python模块

6.1.模块的基本概念

在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。

为了编写可维护的代码,我们把很多函数分组(通常按照功能进行分组),分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式(模块化开发)。在Python中,一个.py文件就称之为一个模块(Module)。

一个复杂的Python程序一般是由团队合作开发完成的,这就要求团队成员各自负责部分Python程序的代码编写。

例如在一个图书馆借书管理系统中,可能会把整个系统划分为图书管理、借书管理、读者管理、财务结算四个功能模块,系统的每个功能模块由团队的一个成员负责编写程序代码。这就是模块化编程的概念,模块化编程既有利于把复杂的功能分解为简单的功能,也有利于团队成员工作的划分,而且能够增加代码的共用性和可读性。既然是团队合作编程,Python代码就不能写到一个文件中,至少每个团队成员负责的那块代码要单独建立一个代码文件。

book:书,书籍;borrow:借用;reader:读者;finance:金融,财务;

模块化编程:实际上是从逻辑上(或者说业务功能上将代码划分为多个代码文件,这些代码文件独立完成程序的一些功能,但彼此也有交互。

最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑函数名和变量名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。点这里查看Python的所有内置函数内置函数

为了避免模块名字的冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

举个例子,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块。

现在,假设我们的abc和xyz这两个模块名字与其他模块名字相同冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名将两个同名的模块分隔开,比如mycompan

mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py

引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py模块的名字就变成了mycompany.abc,类似的,xyz.py的模块名变成了mycompany.xyz。

请注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是mycompany。(当我们仅指定包名未指定模块名,默认导入的便是导入包下的__init__.py模块)

  • 模块名要遵循Python变量命名规范,不要使用中文、特殊字符;
  • 模块名不要和系统模块名冲突,否则将无法导入系统自带的内置模块和已安装第三方模块,最好先查看系统是否已存在该模块,检查方法是在Python交互环境执行import abc,若成功则说明系统存在此模块。
mycompany
 ├─ web
 │  ├─ __init__.py
 │  ├─ utils.py
 │  └─ www.py
 ├─ __init__.py
 ├─ abc.py
 └─ utils.py

mycompany.web也是一个模块,对应的为啥是 web下面的__init__.py,而不是web下的别的

mycompany.web.a是web目录下的a.py

mycompany.web.b是web目录下的b.py

mycompany.web.c是web目录下的c.py

mycompany.web其实完整的称呼是mycompany.web.__init__.py

这个init文件是python包结构的指向的默认文件,没这个文件python就不承认这个web目录是包了

未指定具体的模块,就使用默认的__init__.py,否则必须指定到具体的模块

使用package的具体方法:先创建一个叫mycompany的文件夹(这个就是包的名字了),然后在这个文件夹里建一个__init__.py的文件,然后在把你自己的py文件放进这个文件夹就可以了。注意你的py文件不要和Python自带的模块名冲突! 我们可以自己创建一个package包,然后通过pipy将模块发布出去。

另外就是python中的引入是非常灵活的,引入的方式有很多种!!

6.1.1知识总结

每个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则python就把这个目录当成普通目录,而不是一个包.

在python中,一个.py文件就称之为一个模块module,例如abc.py文件就是一个名字叫abc的模块,如果abc.py在mycompany下(mycompany是一个包,有__init__.py文件),那么abc.py模块名就变成了mycompany.abc(要想使用包package,必须在该文件夹下创建__init__.py)

只要包的名字与其他包不冲突,包里面的模块名和外部的模块名有冲突也没关系,但不推荐!

6.2.模块的基本使用

6.2.1模块的分类

模块分为好几种:

  • 内置模块:Python本身内置很多标准模块,无需额外安装就能使用,比如内建的sys,time等等
  • 第三方模块
  • 自定义模块
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
' a test module '
__author__ = 'Michael Liao'
import sys
def test():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')
if __name__=='__main__':
    test()

第1行和第2行是标准注释,第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行(不用在命令行前输python直接运行,但是不支持Windows系统),第2行注释表示.py文件本身使用标准UTF-8编码;(不写会出现中文乱码)

第3行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都(该字符串不是赋值)被视为模块的文档注释;(如果想使用多行注释可以使用三引号) 第4行使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;

以上就是Python模块的标准文件模板,当然也可以全部删掉不写,但是,按标准办事肯定没错。

使用任何模块(不管是第三方还是内置还是自定义都需要引入)

import sys

导入sys模块后,我们就有了变量sys指向该模块,利用sys这个变量,就可以访问sys模块的所有功能。

sys模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称

运行python3 hello.py获得的sys.argv就是['hello.py'];

运行python3 hello.py Michael获得的sys.argv就是['hello.py', 'Michael]。

if __name__=='__main__':
    test()

当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。(直接运行模块时__name__置为__main__,而如果是将这模块在其他地方进行引入,则__name__就不是__main__了,__name__有2个取值:当模块是被调用执行的,取值为模块的名字;当模块是直接执行的,则该变量取值为:__main__)

"if __name__ == '__main__': " 实现的功能就是Make a script both importable and executable

Make a script both importable and executable:使脚本可导入和可执行,同时保证导入情况下不会额外执行该模块自身的行为

问题一:python中三引号都有什么作用
问题二:__name__的取值到底怎么区分

6.2.2.python作用域

在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过 _前缀来实现的。

正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等;

类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;

类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;

private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

private函数和变量作用通常是作为其他公开函数的处理逻辑隐藏起来,所以我们不推荐将私有函数公开出去。这也是一种非常有用的代码封装和抽象的方法

外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。(但这仅仅是口头约束,实际上还是能进行被外界访问的,这也是为什么是不应该引入,而不是不能)

private 私有的,就是你的东西我们不应该拿,在现实中我们拿了就侵犯了你的隐私了,但是python没有法律规定,只是从道德层面约束。

6.3.安装第三方模块

合理使用第三方模块能够极大提高我们的开发效率!!

在Python中,安装第三方模块,是通过包管理工具pip完成的。

6.3.1 Windows系统安装pip

在Python安装中确保勾选了pip和Add python.exe to Path(两个都点上)(安装的时候除了勾选添加环境路径按钮,其他都默认就行)

判断是否安装成功(前提是pip所在路径必须添加到系统环境变量中):打开cmd命令窗口输入pip,如果有显示说明安装成功。

安装失败:如果Windows提示未找到命令,可以重新运行安装程序添加pip。

推荐一个强大好用的第三方插件---Pillow,Python Imaging Library(PIL)这是Python2下非常强大的处理图像的工具库。遗憾的是PIL目前只支持到Python 2.7,并且有年头没有更新了,因此,基于PIL的Pillow项目开发非常活跃,并且支持最新的Python 3。

第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索,比如Pillow的名称叫Pillow,因此,安装Pillow的命令就是:

pip install Pillow

常用第三方模块:图像处理工具Pillow,以及MySQL驱动程序,Web框架Flask,科学计算Numpy等。

用pip一个一个安装费时费力,还需要考虑兼容性。我们推荐直接使用Anaconda,这是一个基于Python的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,我们装上Anaconda,就相当于把数十个第三方模块自动安装好了,非常简单易用。(安装好Anaconda就相当于安装好多个模块)(但是安装Anaconda会出现很多bug问题,具体请看:详细安装介绍安装和使用)(看别人出现好多问题,还是不要安装为好)

6.3.2模块搜索路径

当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错:

>>> import mymodule
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
ImportError: No module named mymodule

默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中

>>> import sys
>>> sys.path
['''F:\\python\\python38.zip''F:\\python\\DLLs'
'F:\\python\\lib''F:\\python''F:\\python\\lib\\site-packages']

如果我们要添加自己的搜索目录,有两种方法:

一是直接修改sys.path,添加要搜索的目录:

>>> import sys
>>> sys.path.append('/Users/michael/my_py_scripts')

这种方法是在运行时修改,运行结束后失效。

第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。

在 python 交互式环境中,可以通过导入 sys 模块并修改 sys.path 的值,来添加模块搜索路径,但这只是临时有效,交互式环境关闭后,sys.path 被重置为默认值。

windows下的操作永久添加python模块路径的方法 import sys 并 sys.path 找到默认的python的路径,如C:\Users\‘你的用户名’\AppData\Local\Programs\Python\Python37\ 然后在硬盘对应位置找到这个目录,然后在Python37\Lib\site-packages文件夹中,新建一个.pth 的文件,命名规则为 module_[modulename].pth ,例如,你需要通过 import hello来调用这个目录,你可以将其命名为 module_hello.pth 然后记事本打开,里面填写添加个人module的目录*/*直接在windows资源管理器的地址栏复制即可*/* ,如E:\codes\python保存即可。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM