python脚本_实战1

1、python环境搭建(自行百度即可)

2、python IDE工具下载(推荐选择pycharm)

3、git和github区别

git是用来管理本地代码的,是一个工具,需要下载安装。github是个网站,用来远程管理你的本地代码的,需要注册登录。本地代码通过git工具,可以被push到github服务器,代码提交到服务器后,其他人可以通过对应的仓库地址访问到你的代码。

4、python基础语法(变量、数据结构、函数),前面几章有写相关内容,不再赘述

5、深拷贝和浅拷贝的区别

深拷贝:拷贝后的对象b和被拷贝的对象a是完全独立的对象(对象地址复制),当a对象改变后,b对象的值不会受到影响

浅拷贝:拷贝后的对象b和被拷贝的对象a是还有关联的(对象的印象),当a对象的值改变后,b对象的值也会跟着边(但是第一层不影响,第二层才会跟着改变)

python中import是浅拷贝

python中from 模块 import 方法是深拷贝

(当有其他模块的变量在某个某块引用且这个模块需要对该变量去改写时,就得用import,而不能用from  import,否则,当其他方法再引用该变量时,就还是初始定义的值,而不会被修改)

 

其他知识点:

1)定义一个全局变量a=10。定义一个方法fun1()并执行,fun1方法中引用a的值并将a的值改变;再定义一个方法fun2()并执行,fun2方法中再去引用a的值,fun2所引用的a的值是10(未经方法1修改的。因为方法1修改作用域只在方法内,a是个全局变量,出了方法1外,不会被方法1改变)。如果要想方法1实现对全局变量a的改变,则需要在方法1内,将a定义未g'lobal类型(示例:gloal a      a=15),这样的话,全局变量a的值就会被改变,当fun2再去使用a时,a的值就不再是10了(而是15)

2)查看变量是不是同一个,可以通过print(id(a))去查看是不是同一个地址

3)函数没有return的话,默认返回None,使用print方法输出则结果打印出来是None

4)python支持函数嵌套(闭包函数)。代码示例:

def outer():
    def inner():
        print("11111")

    return inner


outer()()

5)包名或者模块名切记不要用系统模块名或第三方模块名,否则可能会出错,如:模块名使用sys,再去导入sys这个系统模块,那可能sys系统模块的一些方法你就使用不了(如:os、sys等)

6)在调用的方法上面按住alt+回车,可以快捷将模块导入

7)python在导包的时候也会执行代码,而且从上到下去执行。如:一个有main函数的模块中导入了其他模块,当main函数模块去运行时,先执行导包,再去执行main函数。所以,在使用某个模块的方法时候,一定要在前面导包,如果写在后面,则无法正常执行

 8)在main函数的模块中,print(__name__)=__main__,其他模块(被main函数调用的模块),print(__name__)=对应的函数名。所以说,main为入口函数

9)浅拷贝和深拷贝

浅拷贝(只拷贝第一层,如果里面有嵌套的内容,还是会影响到我):

改变外层:

#浅拷贝  copy(系统内置模块方法),实现的是浅拷贝。a1外层变了,a1不会跟着变,但是a1内层改变了,a2对应的值也会跟着改变
a1=[1,2,3,[1,2]]
a2=a1.copy()
a1[0]=666
print(a1)
print(a2)

结果:

D:\pythonProject2\Scripts\python.exe D:/pythonProject2/test/t1.py
[666, 2, 3, [1, 2]]
[1, 2, 3, [1, 2]]

Process finished with exit code 0

改变内层:

#浅拷贝  copy(系统内置模块方法),实现的是浅拷贝。a1外层变了,a1不会跟着变,但是a1内层改变了,a2对应的值也会跟着改变
a1=[1,2,3,[1,2]]
a2=a1.copy()
a1[3][0]=666
print(a1)
print(a2)

结果:

D:\pythonProject2\Scripts\python.exe D:/pythonProject2/test/t1.py
[1, 2, 3, [666, 2]]
[1, 2, 3, [666, 2]]

Process finished with exit code 0

 

深拷贝(完全拷贝出一个新的内容。新的内容地址存储内容):

import copy
#深拷贝  使用copy包下的deepcopy()实现的是深拷贝。a1值变了(不论第一层还是第二层,a2的值都不会变)
a1=[1,2,3,[1,2]]
a2=copy.deepcopy(a1)
a1[3][0]=666
print(a1)
print(a2)

结果:

D:\pythonProject2\Scripts\python.exe D:/pythonProject2/test/t1.py
[1, 2, 3, [666, 2]]
[1, 2, 3, [1, 2]]

Process finished with exit code 0

 

posted @ 2021-03-17 18:12  Brynaaa_111  阅读(73)  评论(0)    收藏  举报