二、python编程进阶02:模块和包

news2024/11/24 6:05:16

目录

1. python中的模块是什么

2. 导入模块: 学习import语句

2.1 import语句介绍

2.2 import导入模块的语法

2.3 导入自己的模块

2.4 导入数字开头或者带空格的模块

3. 编写自定义模块

3.1 给自定义模块编写测试代码

3.2 给自定义模块模块编写说明文档

4. 模块的搜索路径

4.1 Python解释器查找模块路径的方式

4.2 设置模块搜索路径: 临时添加模块完整路径

4.3 设置模块搜索路径: 将模块保存到指定位置

4.4 设置模块搜索路径: 环境变量

5. Python的包

5.1 包的概念介绍

5.2 创建包

5.3 导入包

5.4 Python查看模块(变量、函数、类)方法

6. Python第三方库(模块)下载


Python 语言之所以能被广泛应用于各行各业,在很大程度上得益于它的模块化系统。

在Python的标准安装中包含了一组自带的模块,这些模块被称为“标准库”。

Python 3 的标准库官方参考链接: 

https://docs.python.org/3/library/index.html

更重要的是,开发者完全可以根据自己的需要不断地为 Python 增加扩展库。各行各业的 Python 用户贡献了大量的扩展库,这些扩展库极大地丰富了 Python 的功能,这些扩展库从某种程度上也形成了 Python 的“生态圈”。

1. python中的模块是什么?

模块的英文为 Modules,在python中,一个文件(以“.py”为后缀名的文件)就叫做一个模块,模块就是 Python 程序,任何 Python 程序都可以作为模块,包括在前面章节中写的所有 Python 程序,都可以作为模块。

每一个模块在python里都被看做是一个独立的文件,模块可以被项目中的其他模块、一些脚本甚至是交互式的解析器所使用,它可以被其他程序引用,从而使用该模块里的函数等功能,使用Python中的标准库也是采用这种方法。

Python 提供了强大的模块支持,主要体现在,不仅 Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块,通过这些强大的模块可以极大地提高开发者的开发效率。

在编写Python程序时,随着程序功能的增加,程序体积会不断变大,为了便于维护,通常会将其分为多个文件(模块),这样不仅可以提高代码的可维护性,还可以提高代码的可重用性。

代码的可重用性体现在:  当编写好一个模块后,只要编程过程中需要用到该模块中的某个功能(由变量、函数、类实现),无需做重复性的编写工作,直接在程序中导入该模块即可使用该功能。

在Python中模块分为以下几种:

(1)、系统内置标准模块:例如:sys、time、json模块等等;

(2)、自定义模块:自定义模块是自己写的模块,对某段逻辑或某些函数进行封装后供其他函数调用。

注意:自定义模块的命名一定不能和系统内置的模块重名,否则将不能再导入系统的内置模块。例如:自定义了一个sys.py模块后,再想使用系统的sys模块是不能使用的;

(3)、第三方的开源模块:这部分模块可以通过pip install进行安装,有开源的代码;

 

2. 导入模块: 学习import语句

2.1 import语句介绍

如果想在当前 Python 源文件里使用另一个Python源文件的函数代码,只需要在当前Python源文件里执行 import语句,导入模块即可。import语句可以出现在程序中的任何位置,但最好把导入模块放在代码的开头。

import跟C/C++中的#include作用有点类似,都是为了调用定义在其他文件中的变量、函数或者类,但实现的区别很大。

当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。

一个模块只会被导入一次,不管你执行了多少次import,这样可以防止导入模块被一遍又一遍地执行。

2.2 import导入模块的语法

import 导入模块的语法主要有以下两种:

第一种:  import 模块名1 [as 别名1], 模块名2 [as 别名2],…

使用这种语法格式的 import 语句,会导入指定模块中的所有成员(包括变量、函数、类等)。

当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。注意,用 [] 括起来的部分,可以使用,也可以省略。--->可以起,也可以不起花名

示例代码: 导入模块

#!/usr/bin/python3

import math         #导入math模块:模块里面包含了一些数学运算的函数

data=math.pow(10,2) #pow(x,y)函数是求x的y次方的值

print(data)         #输出结果: 100.0

示例代码: 使用别名

#!/usr/bin/python3

#导入math模块:模块里面包含了一些数学运算的函数 

import math as wbyq   #使用别名  

data=wbyq.pow(10,4)   #pow(x,y)函数是求x的y次方的值

print(data)           #输出结果: 10000.0

第二种:  from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…

使用这种语法格式的 import 语句,只会导入模块中指定的成员,而不是全部成员(部分导出)。当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。注意,用 [] 括起来的部分,可以使用,也可以省略。

示例代码: 导入模块里指定的成员

#!/usr/bin/python3

from math import pow    #导入math模块中指定的成员

data=pow(10,4)          #pow(x,y)函数是求x的y次方的值

print(data)             #输出结果: 10000.0

示例代码: 使用别名

#!/usr/bin/python3

from math import pow as wbyq   #导入math模块中指定的成员,使用别名

data=wbyq(10,2)            #wbyq(x,y)函数是求x的y次方的值print(data)  

#输出结果: 100.0

在使用import语句的时候,Python解释器会根据搜索路径找到对应的文件,搜索路径是在Python编译或安装的时候确定的,搜索路径被存储在sys模块中的path变量sys.path 输出是一个列表,其中第一项是空串'',代表当前目录,如果使用脚本执行上面代码,就能输出确定的路径。

示例代码:

#!/usr/bin/python3

import sys   #导入sys模块

print(sys.path)

2.3 导入自己的模块

前面说过,模块就是 Python 程序,任何 Python 程序都可以作为模块,下面就简单的创建一个自定义模块,导入使用。

先在任意目录下创建一个hello.py文件,写入以下测试代码:

#!/usr/bin/python3

def wbyq():

    print("hello world.")

在hello.py文件相同目录下,在创建一个python_code.py文件,引用hello模块:

#!/usr/bin/python3

import hello   #导入hello模块

hello.wbyq()

运行python_code.py文件,输出结果:

hello world.

2.4 导入数字开头或者带空格的模块

在上一小节编写自己模块之后,可以体会到,其实模块就是一个python代码文件,因此要求其文件名要符合操作系统的命名规则。

这可能会遇到一个问题,比如: windows操作系统中允许文件名中包含空格,也就是说,模块文件可以起名为类似“he llo”的形式。但这和 Python 语法相矛盾,Python 是以空格来隔离一行语句中的不同元素,如果模块名中出现空格,就无法再使用 import 引入,如果模块名称以数字开头,也无法使用 import 语句正常导入。

针对以上情况,如果模块中包含空格或者以数字开头,就需要使用Python 提供的 __import__() 内置函数引入模块。

例如: 导入he llo模块

#!/usr/bin/python3

#导入he llo模块

hello=__import__("he llo") #调用模块里的成员

print(hello.data)

print(hello.list)

3. 编写自定义模块

3.1 给自定义模块编写测试代码

在上面章节里已经编写了一个简单的自定义模块加载例子,但是没有编写测试代码。正常情况下,当自定义模块编写完成之后,需要编写一些测试代码,检验模块中各个功能是否都能正常运行。

例如:先在任意目录下创建一个hello.py文件,写入以下测试代码:

#!/usr/bin/python3

data=1234

list=['1','2','3','4','5','6']

def func():

    print("我是自定义模块")

print("data=",data)

print("list=",list)

func() #调用函数

在hello.py文件相同目录下,再创建一个python_code.py文件,引用hello模块:

#!/usr/bin/python3

import hello   #导入hello模块

运行python_code.py文件:

data= 1234

list= ['1', '2', '3', '4', '5', '6']

我是自定义模块

测试结果发现,导入hello模块时,原来hello里编写的测试代码会自动执行,这显然不是期望看到的结果。

我们希望的效果是:如果直接运行模块文件(相当于测试文件),程序会执行该模块的测试函数;如果是其他程序导入该模块,程序不应该执行该模块的测试函数。

要实现这个效果,需要借助 Python 内置的 __name__ 变量,当直接运行一个模块时,name 变量的值为 __main__;而将模块被导入其他程序中并运行该程序时,处于模块中的 __name__ 变量的值就变成了模块名。

因此,如果希望测试函数只有在直接运行模块文件时才执行,则可在调用测试函数时增加判断,即只有当 __name__ =='__main__' 时才调用测试函数。

示例: 改写hello.py代码

#!/usr/bin/python3

data=1234

list=['1','2','3','4','5','6']

def func():

    print("我是自定义模块")

#以下是测试代码

if __name__=='__main__':    #只有当 __name__ =='__main__' 时才调用测试函数   

    print("data=",data)

    print("list=",list)

    func() #调用函数

#本模块被执行时, __name__才等于__main__

#当该模块被其他模块引用时,__name__的值就是模块名,所以其他模块引用该模块时

#不会执行测试代码

示例: 改写python_code.py

#!/usr/bin/python3

import hello   #导入hello模块

#调用模块里的成员

#print(hello.data)

#print(hello.list)

#hello.func()

修改完成后,再次执行模块文件(hello.py),测试代码会执行;而执行导入模块文件的python_code.py,模块中的测试代码不会执行。

 

3.2 给自定义模块模块编写说明文档

在实际开发中编写自定义模块时,应该为模块编写说明文档;否则,其他开发者将不知道该模块有什么作用,以及包含哪些功能。

为模块编写说明文档,只要在模块开头的位置定义一个字符串即可。

例如: 在上面程序hello.py的第一行代码之前添加下面的内容

"""这是自己编写自定义模块模块的功能是: 学习自定义模块使用

其中: data 是一个变量

list 是一个列表

func 是一个函数"""

#!/usr/bin/python3

data=1234

list=['1','2','3','4','5','6']

def func():

    print("我是自定义模块")

#以下是测试代码

if __name__=='__main__':    #只有当 __name__ =='__main__' 时才调用测试函数   

    print("data=",data)

    print("list=",list)

    func() #调用函数

#本模块被执行时, __name__才等于__main__

#当该模块被其他模块引用时,__name__的值就是模块名,所以其他模块引用该模块时

#不会执行测试代码

在python_code.py代码里调入hello模块,打印hello模块的帮助文档:

#!/usr/bin/python3import hello   #导入hello模块 #打印模块的帮助信息print(hello.__doc__)

输出:

这是自己编写自定义模块模块的功能是: 学习自定义模块使用

其中: data 是一个变量

list 是一个列表

func 是一个函数

4. 模块的搜索路径

4.1 Python解释器查找模块路径的方式

通常情况下,当使用 import 语句导入模块后,Python 会按照以下顺序查找指定的模块文件:

(1)、在当前目录,即当前执行的程序文件所在目录下查找;

(2)、到 PYTHONPATH(环境变量)下的每个目录中查找;

(3)、到 Python 默认的安装目录下查找。

以上所有涉及到的目录,都保存在标准模块 sys 的 sys.path 变量中,通过此变量,可以输出指定程序文件支持查找的所有目录。

因此,如果要导入的模块没有存储在 sys.path 显示的目录中,那么导入该模块并运行程序时,Python 解释器会抛出 ModuleNotFoundError(未找到模块)异常。

为了让 Python 能找到自定义(或第三方提供) 的模块,可以用以下 3 种方式来告诉它:

(1)、向 sys.path 中临时添加模块文件存储位置的完整路径。

(2)、将模块放在 sys.path 变量中已包含的模块加载路径中。

(3)、设置系统环境变量。

 

4.2 设置模块搜索路径: 临时添加模块完整路径

先在任意目录下创建一个hello.py文件(C:\Users\Desktop\py),写入以下代码:

"""这是自己编写自定义模块模块的功能是: 学习自定义模块使用

其中: data 是一个变量

list 是一个列表

func 是一个函数"""

#!/usr/bin/python3

data=1234

list=['1','2','3','4','5','6']

def func():

    print("我是自定义模块")

#以下是测试代码

if __name__=='__main__':    #只有当 __name__ =='__main__' 时才调用测试函数   

    print("data=",data)

    print("list=",list)

    func() #调用函数

#本模块被执行时, __name__才等于__main__

#当该模块被其他模块引用时,__name__的值就是模块名,所以其他模块引用该模块时

#不会执行测试代码

在其他任意目录下(C:\Users\Desktop\test),再创建一个python_code.py文件,不需要和hello.py文件目录相同。

#!/usr/bin/python3

import hello   #导入hello模块

#打印模块的帮助信息

print(hello.__doc__)

#调用模块里的成员

#print(hello.data)

#print(hello.list)

#hello.func()

由于python_code.py文件和hello.py文件不在相同目录下,如果直接在python_code.py文件中导入hello模块会报错,因为Python解释器找不到hello.py模块的位置。

想要让Python解释器找到hello.py模块,可以把模块文件的存储位置,临时添加到 sys.path 变量中。示例代码:python_code.py

#!/usr/bin/python3

import sys

#在添加完整路径中,路径中的 '\' 需要使用 \ 进行转义,否则会导致语法错误。

sys.path.append('C:\\Users\\Desktop\\py')

#导入hello模块

import hello

#调用模块里的成员

print(hello.data)

print(hello.list)

这样运行就不会出错。

程序成功运行后,顺便在python_code.py 文件增加一行代码,输出 sys.path 变量的值,查看路径是否已经添加成功:示例代码: python_code.py

#!/usr/bin/python3

import sys

#在添加完整路径中,路径中的 '\' 需要使用 \ 进行转义,否则会导致语法错误。

sys.path.append('C:\\Users\\Desktop\\py')

#导入hello模块

import hello

#调用模块里的成员

print(hello.data)

print(hello.list)

print(sys.path)  #打印搜索路径

可以看到输出的结果list中含有:' C:\\Users\\Desktop\\py '

通过该方法添加的目录,只能在执行当前文件的窗口中有效,窗口关闭后就会失效。

 

4.3 设置模块搜索路径: 将模块保存到指定位置

Python 程序默认的模块加载路径保存在 sys.path 变量中,我们可以先看看 sys.path 中保存的默认加载路径, 可以直接将编写好的 hello.py 文件添加到输出的任意一个默认路径下,就相当于为 Python 扩展了一个 hello 模块,这样任何 Python 程序都可使用该模块。

但通常来说,Python 的扩展模块都默认添加在 lib\site-packages 路径下,它专门用于存放 Python 的扩展模块和包。

将hello.py文件移动到lib\site-packages 路径下(以win10系统为例)。

移动成功之后,运行python_code.py文件加载hello模块,测试结果。

4.4 设置模块搜索路径: 环境变量

Python 将会根据 PYTHONPATH 环境变量的值来确定到哪里去加载模块。PYTHONPATH 环境变量的值是多个路径的集合,这样 Python 就会依次搜索 PYTHONPATH 环境变量所指定的多个路径,试图从中找到程序想要加载的模块。

5. Python的包

5.1 包的概念介绍

实际开发中,一个大型的项目往往需要使用成百上千的 Python 模块,如果将这些模块都堆放在一起,势必不好管理;使用模块可以有效避免变量名或函数名重名引发的冲突,但是如果模块名重复怎么办呢?因此,Python提出了包(Package)的概念。

在Python语言中,一个.py文件就可以叫做一个模块(model),如果a.py中有一个功能在b.py中被引用,那么a.py就算是一个模块;包是作为目录存在的,包的一个特点就是文件中有一个__init__.py文件,包可以包含模块,也可以包含包。

简单理解,包就是文件夹,只不过在该文件夹下必须存在一个名为“__init__.py” 的文件。(这是 Python 2.x 的规定,在 Python 3.x 中,__init__.py 对包来说,并不是必须的)

每个包的目录下都必须建立一个 __init__.py 的模块,可以是一个空模块,可以写一些初始化代码,其作用就是告诉 Python 要将该目录当成包来处理。

__init__.py 不同于其他模块文件,此模块的模块名不是 __init__,而是它所在的包名。

例如:在 python_code 包中的 __init__.py 文件,其模块名就是python_code 。

包是一个包含多个模块的文件夹,它的本质依然是模块,因此包中也可以包含包

包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。

比如: 一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。

就好像使用模块的时候,你不用担心不同模块之间的全局变量相互影响一样,采用点模块名称这种形式也不用担心不同库之间的模块重名的情况。在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。

5.2 创建包

创建一个包,主要分为如下两步:

(1)、创建一个文件夹,该文件夹的名字就是该包的包名。

(2)、在该文件夹内创建一个名为 __init__.py 的 Python 文件,在此文件中,可以不编写任何代码,也可以编写一些 Python 初始化代码,在此文件中编写的代码,其他程序文件导入包时,会自动执行。

示例: 创建一个名称为python_hello_pack的包

  示例:  __init__.py 文件代码

'''

这是学习包创建的一个例子

'''

print("这是自己创建的一个包")

python_hello_pack包创建成功之后,在包的目录下创建模块,分别为:code_mode_1.py和code_mode_2.py

示例代码: code_mode_1.py

#!/usr/bin/python3

'''这是自定义模块1'''

def func():

    print("这是自定义模块1")

if __name__ == "__main__":

    func()

示例代码: code_mode_2.py

#!/usr/bin/python3

'''这是自定义模块2'''

def func():

    print("这是自定义模块2")

if __name__ == "__main__":

    func()

现在的包结构如下:

包中还有容纳其它的包,可以在python_hello_pack目录下继续添加其他的包和模块

注意:  包的路径需要添加到Python的搜索路径中,才可以被其他Python程序加载,参考4.4小节。

这里选择第二种方式:

5.3 导入包

包的本质就是模块,因此导入包和导入模块的语法非常类似。无论导入自定义的包,还是导入从其他地方下载的第三方包,导入方法可归结为3 种。

说明:  用 [] 括起来的部分,是可选部分,即在使用时可以忽略。

与模块类似,包被导入之后,会在包目录下生成一个 __pycache__ 文件夹,并在该文件夹内为包生成一个 __init__.cpython-38.pyc 文件。

第一种:  import 包名[.模块名 [as 别名]]

示例代码:  用前面创建好的python_hello_pack 包为例,导入包中的模块并使用模块中成员。

#!/usr/bin/python3

#导入包

import python_hello_pack.code_mode_1

import python_hello_pack.code_mode_2

python_hello_pack.code_mode_1.func()  #调用模块中的函数

python_hello_pack.code_mode_2.func()  #调用模块中的函数

结果:

这是自己创建的一个包

这是自定义模块1

这是自定义模块2

第二种:  from 包名 import 模块名 [as 别名]

#!/usr/bin/python3

#从包中导出模块

from python_hello_pack import code_mode_1

from python_hello_pack import code_mode_2

code_mode_1.func()  #调用模块中的函数

code_mode_2.func()  #调用模块中的函数

第三种:  from 包名.模块名 import 成员名 [as 别名]

#!/usr/bin/python3

#导入包

from python_hello_pack.code_mode_1 import func

#从xxx包的xxx模块中导出xxx成员,并给它起一个别名

from python_hello_pack.code_mode_2 import func as func2   

#调用模块中的函数

func()

func2()  #调用模块中的函数

结果:

这是自己创建的一个包

这是自定义模块1

这是自定义模块2

5.4 Python查看模块(变量、函数、类)方法

在导入模块之后,开发者往往需要了解模块包含哪些功能,比如包含哪些变量、哪些函数、哪些类等,还希望能查看模块中各成员的帮助信息,掌握这些信息才能正常地使用该模块。

Python内置的函数 dir() 可以找到模块内定义的所有名称。

语法:  dir(模块名)以一个字符串列表的形式返回:  

示例代码:

#!/usr/bin/python3

#导入包

import python_hello_pack.code_mode_1

import python_hello_pack.code_mode_2

#输出模块内包含的成员信息

print(dir(python_hello_pack.code_mode_1))

print(dir(python_hello_pack.code_mode_2))

结果:

这是自己创建的一个包

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'func']

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'func']

比如:其中的__file__属性可以输出模块的路径。

示例代码

#!/usr/bin/python3

#导入包

import python_hello_pack.code_mode_1

import python_hello_pack.code_mode_2

print(python_hello_pack.code_mode_1.__file__)

6. Python第三方库(模块)下载

进行 Python 程序开发时,除了使用 Python 内置的标准模块以及我们自定义的模块之外,还有很多第三方模块可以使用,这些第三方模块可以借助 Python官方提供的查找包页面(https://pypi.org/)找到。

使用第三方模块之前,需要先下载并安装该模块,然后就能像使用标准模块和自定义模块那样导入并使用。

下载和安装第三方模块,可以使用 Python 提供的 pip 命令实现。

pip 命令的语法格式如下:

pip install|uninstall|list 模块名

其中,install、uninstall、list 是常用的命令参数,各自的含义为:

(1) install:用于安装第三方模块,当 pip 使用 install 作为参数时,后面的模块名不能省略。

(2) uninstall:用于卸载已经安装的第三方模块,选择 uninstall 作为参数时,后面的模块名也不能省略。

(3) list:用于显示已经安装的第三方模块。

如果下载过程中提示升级pip工具,在命令行运行python -m pip install --upgrade pip 命令即可。

pip 命令会将下载完成的第三方模块,默认安装到 Python 安装目录中的 \Lib\site-packages 目录下,位于此目录的模块,可以直接使用 import 语句引入。

如果在运行python -m pip install --upgrade pip 命令下载速度慢,连接超时,可以使用参数-i指定国内下载源。

在命令行执行命令: python -m pip install --upgrade pip -i https://pypi.douban.com/simple

一些国内下载源的地址:

pip install -i https://pypi.douban.com/simple module  # 豆瓣源

pip install -i http://mirrors.aliyun.com/pypi/simple/ module  # 阿里云

pip install -i  https://pypi.mirrors.ustc.edu.cn/simple/ module  # 中国科技大学

pip install -i  http://pypi.douban.com/simple/ module         # 豆瓣(douban)

pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple/ module  # 清华大学

pip install -i  http://pypi.mirrors.ustc.edu.cn/simple/ module  # 中国科学技术大学

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1215. 小朋友排队(树状数组应用 -- 逆序对个数)

题目如下: 思路 or 题解 我们可以得出交换的次数 > 逆序对个数 kkk 我们可以发现 所有 位置 左边大于它的个数 右边小于它的个数和 kik_iki​ 等于 k∗2k*2k∗2 我们可以简单证明出(感觉出):答案就是 ∑1n(1ki)∗ki2\sum^n_1 \frac{(1 k_i) * k_i}…

JavaScript 错误

文章目录JavaScript 错误 - throw、try 和 catchJavaScript 错误JavaScript 抛出(throw)错误JavaScript try 和 catchThrow 语句实例实例JavaScript 错误 - throw、try 和 catch try 语句测试代码块的错误。 catch 语句处理错误。 throw 语句创建自定义错…

string的使用介绍

目录 标准库中的string类 string类(了解) 编码介绍 string类的常用接口说明 Member functions 测试一:创建对象 测试二:遍历字符串 Iterators 测试三:反向迭代器(Iterators) Capacity 测试四:容器相关(Capacity) 测试…

Redis企业云如何通过缓存轻松扩展到亿级请求?

你是否在春运抢票过程中遇到12306 APP瘫痪? 你是否在双十一抢好物的时候显示系统繁忙? 你是否在微博刷某个爆了的娱乐新闻时显示页面走丢了? 前几天热搜上好像又说小红书又崩溃了? 当用户请求量过高,数据库无法支撑时&…

Annotation(注解)

一、注解概述1.从 JDK 5.0 开始,Java 增加了对元数据(MetaData) 的支持,也就是Annotation(注解)2.Annotation 其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用 Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些…

Go第 6 章:函数、包和错误处理

Go第 6 章:函数、包和错误处理 6.1 为什么需要函数 6.1.1请大家完成这样一个需求: 输入两个数,再输入一个运算符(,-,*,/),得到结果.。 6.1.2使用传统的方法解决 分析一下上面代码问题 上面的写法是可以完成功能, 但是代码冗余同时不利于代码维护函数…

SAP FICO 成本对象控制解析

成本对象控制(Cost Object Cotrol)是指对不同的成本对象,比如成本收集器、生产订单、销售订单等进行成本的期末结算。基于这些不同的成本对象,SAP在成本对象控制菜单下面细分了相应的操作(SAP 菜单 →会计核算 →控制 …

JavaScript篇.day10-面向对象,对象,构造函数,this关键字,原型

目录面向对象对象构造函数this关键字原型面向对象面向过程: 在开发过程中,关注过程的开发方式. 在开发时关注每一个细节,步骤和顺序.面向对象: 在开发过程中,只需要找一个对象来完成事情的开发思想对象: 在生活中,万物皆对象 封装: 将完成步骤封装在对象内部属性: 对象的特征核…

Java泛型上界与泛型方法的应用 | 如何通过泛型类获取任意类型的三个数的最大值?

目录 一、引言 二、泛型上界 1、什么是泛型的上界 2、泛型上界的语法 三、泛型方法 1、泛型方法的语法 2、泛型方法的类型推导 三、编程分析 1、MyCompare泛型类 2、泛型方法实现 四、总结 一、引言 初学Java时,同学们基本都会遇到这样一个基础编程题&am…

平面设计师去哪里找素材?

5个平面设计素材网站,赶紧收藏! 1、菜鸟图库 https://www.sucai999.com/?vNTYwNDUx ​ 站内平面海报、UI设计、电商淘宝、免抠、高清图片、样机模板等素材非常齐全。还有在线抠图、CDR版本转换功能,能有效的为设计师节省找素材时间&#x…

MySQL查询训练题1

表信息: dept表和emp表 bonus表和salgrade表 练习题: 1、选择部门30中的所有员工; select * from Emp where DEPTNO30;2、列出所有办事员(CLERK)的姓名,编号和部门编号; select ENAME 姓名,EMPNO 编号,DEPTNO 部门…

【vue2中使用axios和插槽】一.组件的生命周期;二.vue2中使用axios;三.插槽

目录 一.组件的生命周期 1.组件的生命周期经历的阶段: (1)创建阶段:beforeCreate、created、beforeMount、mounted (2)运行阶段:beforeUpdate、update (3)销毁阶段&a…

C++ 学习 Day.10(标准模板库简介)

标准模板库: 简单地说,标准模板库(STL)是一组模板类和函数,向程序员提供了: • 用于存储信息的容器; • 用于访问容器存储的信息的迭代器; • 用于操作容器内容的算法。 关于STL可见…

Git学习和使用

目录:Git概念和知识Git的四个工作区域和工作流程Git 的四个工作区域Git 的工作流程git文件状态常用操作进阶操作单个本地库绑定多远程仓库方案Git概念和知识 Git的四个工作区域和工作流程 Git 的四个工作区域 Remote:远程仓库 位于托管代码的服务器&a…

【语义分割】语义分割综述文章

目录:语义分割一、什么是语义分割二、什么是图像中的语义信息?三、语义分割中的上下文信息四、语义分割方法五、语义分割神经网络六、目前比较经典的网络七、评价指标一、什么是语义分割 语义分割,也称为像素级分类问题,其输出和…

如何远程访问别人的MySQL数据库

1、 如何远程访问别人的MySQL数据库 - curryzwy - 博客园 (cnblogs.com)https://www.cnblogs.com/curryzwy/p/15730485.html 2、 mysql——同一局域网如何共同访问一台电脑的数据库(胎教级教学)_七月星辰的博客-CSDN博客_两台电脑共用一个mysql数据库…

1803. 统计异或值在范围内的数对有多少

解法一:字典树 前置知识:字典树 字典树是一种实现字符串快速检索的多叉树结构。 例如:给定字符串集合[cab, cos, car, cat], 我们现在需要判断cat是否存在于字符串集合中。 字典树代码: static int[][] trie new int[N][26]; …

AcWing 1221. 四平方和(二分或哈希)

一、题目描述 二、思路分析 先从时间复杂度的角度入手,这道题的数据范围是106,因此我们的时间复杂度要控制在O(n)O(n)O(n)或者O(nlogn)O(nlogn)O(nlogn)。 对于abcd中的任何一个元素,必定是小于n\sqrt nn​的。 我们的一个思路就是去枚举&…

如何选择用 .net Framework 或 .net core

小米问: 给你一个项目,如何选择用 netframework 或 netcore?如何选择服务器? 怎么去考虑? 咋回答呢 答: 不要考虑.net framework 除非极其特殊的情况 比如目标主机系统版本较低 服务器自然是linux好&a…

2023年考证时间一览表

2022年已经成为历史,在疫情背景全面开放下给大家整理了2023年全年的考试时间以及报名时间新鲜出炉,了解清楚,为2023年提前做好规划! 1月份 2022年下半年中小学教师资格考试面试 报名时间:2022年12月9日-12日 考试时间…