预习笔记1_Mikasa47

预习笔记1

要点:

  1. #!/usr/bin/env python
    #-*- coding:utf-8 -*-

    LINUX或CMD指令中需要加入以上代码以识别中文字符串,IDE程序中则不用

  2. python2
    print 可以不加括号
    input 获取到的是你输入什么类型,就是什么类型
    raw_input() == python3 input

    python3
    print() 必须加括号
    input 获取到的都是字符串

  3. import getpass

    getpass.getpass()函数与input()函数的区别是getpass函数不会显示出来console中输入的字符串--保密作用

  4. 驼峰体
    大峰 AlexSb 每个单词首字母大写
    小峰 alexSb 第一个单词首字母小写,其他单词首字母大写
    下划线命名 alex_sb

  5. 计算机基础
    cpu 大脑
    内存 临时记忆
    硬盘 永久记忆
    输入设备 眼睛 耳朵
    输出设备 嘴巴
    操作系统 控制计算机硬件工作的流程
    应用程序 安装在操作系统之上的软件

  6. python2和python3的区别

    python2
    源码不统一
    重复代码

    python3
    源码统一
    没有重复代码了

    编译型:
    优点: 运行速度快
    缺点: 开发效率慢
    解释型:

    优点:开发效率快
    缺点:运行速度慢

  7. python变量分为可变类型和不可变类型

    不可变类型(数字、字符串、元组、不可变集合)
    可变类型(列表、字典、可变集合)

    https://www.cnblogs.com/blackmatrix/p/5614086.html

    对于不可变类型int,无论创建多少个不可变类型,只要值相同,都指向同个内存地址。同样情况的还有比较短的字符串。

    对于其他类型则不同,以浮点类型为例,从代码运行结果可以看出它是个不可变类型:对i的值进行修改后,指向新的内存地址。

    修改代码声明两个相同值的浮点型变量,查看它们的id,发现它们并不是指向同个内存地址,这点和int类型不同(这方面涉及Python内存管理机制,Python对int类型和较短的字符串进行了缓存,无论声明多少个值相同的变量,实际上都指向同个内存地址。)。

可变类型的话,以list为例。list在append之后,还是指向同个内存地址,因为list是可变类型,可以在原处修改。

改改代码,当存在多个值相同的不可变类型变量时,看看它们是不是跟可变类型一样指向同个内存地址:

从运行结果可以看出,虽然a、b的值相同,但是指向的内存地址不同。我们也可以通过b = a 的赋值语句,让他们指向同个内存地址:

不可变对象的“值” 不能改变,但它的组成对象是能做到改变的。

  1. 值传递:表示传递直接传递变量的值,把传递过来的变量的值复制到形参中,这样在函数内部的操作不会影响到外部的变量。
    引用传递:我个人觉得可以把引用理解为一个箭头,这个箭头指向某块内存地址,而引用传递,传递过来的就是这个箭头,当你修改内容的时候,就是修改这个箭头所指向的内存地址中的内容,因为外部也是指向这个内存中的内容的,所以,在函数内部修改就会影响函数外部的内容。

  2. 变量和数据都是保存在内存的
    引用的概念
    变量和数据分开保存
    数据保存在内存
    变量中保存着数据在内存的地址
    变量中记录数据的地址叫做引用
    使用 id()查看变量的地址

  3. 由于python规定参数传递都是传递引用,也就是传递给函数的是原变量实际所指向的内存空间,修改的时候就会根据该引用的指向去修改该内存中的内容,所以按道理说我们在函数内改变了传递过来的参数的值的话,原来外部的变量也应该受到影响。但是上面我们说到了python中有可变类型和不可变类型,这样的话,当传过来的是可变类型(list,dict)时,我们在函数内部修改就会影响函数外部的变量。而传入的是不可变类型时在函数内部修改改变量并不会影响函数外部的变量,因为修改的时候会先复制一份再修改。

猜你喜欢

转载自www.cnblogs.com/mikasa47/p/11115848.html