Python学习笔记--基础语法--变量和运算符

1.变量是什么?为什么要有变量?变量如何使用?

  • 变量是什么?
    1. 量是衡量是事物的一种状态。可以用数量来表示标定性,如快慢,多少,高低等 。注①百度百科-量
    2. 变是指变化。
    3. 变量是,把事物的状态记录下来,并且记录下来的值是可以变化的。
    4. (扩展)变量是,Python提供给我们,操作内存的数据的一种机制。
  • 为什么要有变量?
    1. 为了让计算机像人一样记住事物的状态。
    2. 比如,我记住了什么是手机,那么想诺基亚这种古老只能打电话的通信设备,是手机,
    3. 而随着手机增加了拍照,MP3等功能,我对手机的认识,也随之而变化。
    4. 那么,我对手机的这个"变量",也就随之而更新了。
    5. 同样,我希望电脑也能有这个"变量"
  • 变量如何使用?
    1. 先定义,后使用。
    2. 比如下面:name是变量名,"liqi" 是变量值。
  • (扩展)数据是什么?
    • 数据是记录世界的状态
  • (扩展)变量在计算机内部是如何实现?
    • 比如name = "liqi"
    • 计算机开辟出一个小房间(内存空间),把变量值"liqi",放到这个小房间里去。
    • 然后把这个小房间的地址(内存地址),绑定给name。
    • 下次想要拿到"liqi"这个值,通过name就可以找到。

1.5(补充)程序中的变量是什么?

  • 变量是数据的容器。——《计算机是怎样跑起来的》

2.变量为什么重要?

  • 程序 = 数据+功能
  • 数据和功能,什么是最核心的?是数据。
  • 比如,支付宝,里边放了钱。支付宝功能可以丢,但钱(那些数据)是不能丢的。
  • 而变量,就是操作数据的一种最重要的方式。

3.为什么要给设计这么多语法?

  • 为了让计算机的跟人一样
  • 把握这个原则。去理解这些语法和结构。会更加容易些。
  • 比如,为什么要有if判断这个语法? 人又何尝不是时时刻刻在做判断和抉择呢?
  • 比如,为什么要有循环这种结构?人又何尝不是日复一日的在循环?
  • 比如,为什么要有类?人又何尝不是,"物以类聚,人以群分"?

4.变量的三大组成部分?

  • 变量名:为了方便找值?(应该是把内存地址起个别名)
  • 赋值符合:将变量值的内存地址绑定到变量名。
  • 变量值:记录事物的状态。
    • 变量名:
      • 应该 见名知其意,目的是让代码具备可读性
      • 命名原则:1.不用关键字,2.使用数字字母下划线,3.不用数字开头。
      • 命名风格:Python推荐变量名,纯小写加下划线。
    • 变量值:
      • 类型。(数字类型,布尔型,列表,字典,集合,)
      • id 。值在内存中反应的身份证号,反应内存地址。

5.我们所说的Python的数据类型有哪些?

  • 这个我没有找到权威的解答,我粗略地把我常用的数据类型归类如下:
    • 数字类型(整型,浮点型)
    • 字符串类型
    • 布尔类型
    • 序列类型(列表,元组,字典,集合)

6.is和==判断有什么区别?

  • is 是判断变量的id是否一致。
  • == 是判断值是都一致。
  • 如果两个变量id相等,值一定相等。值相等,id不一定相等。
  • 这里赋值的时候,解释器有时候会优化,交互式环境有小整数池概念,(-5 ~ 256)。

7.Python启动的时候,有什么优化机制?

  • 小整数池的概念。把常见的数据开辟出内存空间来。
  • 字符串,也会开辟一些出来。
  • 特殊的None
  • 布尔类型,True和False 也会开辟出来
    • 当有新的变量的变量值等于布尔值时,就会把这个新的变量绑定给True和False的id地址。
    • 这也是为什么 判断的时候,可以用 if x is True 这种方式来判断了。

 

 

8.Python中a is None和a == None 有什么区别?

  • 其实,判断没什么区别。
  • 只是用is 显得很懂Python,很专业!(尤其是,理解上面写的知识点后)
 

 

9.为什么不能用a is 10000这种来判断?

  • 10000这个值,不是常用整数池里面的,系统存放的时候,是选择一个内存空间存放。
  • 因为不是常用的,可能会有多个内存空间都存放同一个值。
  • 所以,他们的id就会不同,但是值是相同的,所以,要用==来判断
  •  

 

 

10.内存管理是什么?Python如何对于内存管理是怎样的?

  • 内存管理:是引入一种垃圾回收机制(Garbage Collection)[ˈɡɑːbɪdʒ kəˈlekʃn] ,简称GC。
  • Python的GC机制,是采用一种【计数引用】,
  • 比如 x = 100,y = 100,现在对于变量值100 有x , y 两个引用。变量值1000的引用次数为2
  • 如果,现在x = 999 , y = 333 , 现在变量值100, 没有人引用。变量值100的引用次数为0
  • 对于这个引用次数为0的变量值100,Python解释器,会定时清理掉。

 11.像有些语言,比如C语言,需要自己对内存进行引用和释放,这样的好处和弊端是?

  • 好处是,自己可以操作硬件系统。
  • 弊端是,如果忘记释放,会导致内存溢出。(也就是内存满了,像上面的100,没有释放掉,会一直占用,如果这样的100有很多,就会把内存占满。)

12.垃圾机制,有没有效率问题?

  • 有的。
  • 垃圾回收机制,是每次都要扫描一遍,变量值的引用次数。
  • 当变量值越来越多的时候,扫描的时间就会越来越长。
  • 此时,如何提升扫描效率呢?
  • 分代回收

13.垃圾回收的分代回收是什么意思?

  • 垃圾回收,每次都要扫描一次,
  • 每次扫描,我都理解为老师检测作业一次。
  • 如果,有5个学生,每次都按时交作业,我就可以降低这5个同学的检测频率。
  • 比如原来全班同学60人。每天检测一次,每次检测作业都是,全部同学都检测一遍。
  • 当发现有5个同学,每次都交作业,完成的很好。老师可以把这5个同学的检测频率降低,改为这5个同学,每周检测一次。
  • 当这5个同学,有2个,每次都完成的更好,我就改为每个月检测一次。
  • 这里面的思想,就是分代回收。
  • (扩展)更专业的说法是,分为新生代和老生代,假设新生代活过了5轮,就晋升为老生代。老生代,每个月检测一次。新生代,每天检测一次。
  • 详见垃圾回收-egon

14.标记清除是什么?

  • 解决循环引用导致的内存泄露?

15.Python设计理念是什么?

  • Python的设计理念,是极致的简单。有可能推动全民编程的一门语言。
  • 不涉及计算机硬件的知识。去掉了指针的概念。(指针是为了操作内存地址)

16.Python的常量是什么?

  • Python没有常量的关键词,一般约定俗成 大写为常量。
  • 例如 :AGE = 18 

17.变量值的类型为什么有多种多样?

  • 变量值是记录事物的状态的,而事物的状态是多种多样的。
  • 比如,记录一个人的数据,有名字,年龄,薪资,爱好等等。
  • 如果只用整型去记录,那么名字只能叫123,年龄456,薪资3,爱好 789。这样就记录就不好理解。
  • 所有,我们用不同的类型去记录。比如,名字用字符串,年龄用整型,薪资用浮点型,爱好用列表,...

18.详细介绍list列表类型?

  • list可以存放多个值,可以根据索引取值。
  • 当我们需要按照索引取值的话,比如,一年的薪资,取第1个月的薪资,取第5个月的薪资。等等
  • 数据存不是目的,方便取是目的。

19.既然有存取多种数据的类型,是列表,为什么还要有字典?

  • 列表一般用来存放,同种属性,比较方便。
  • 字典用来存放,不同属性的,比较方便。
  • 比如:存放一个人的状态。用字典比较好。
  •    

  • 上面这个例子,记录个人信息的时候,选择字典dict就很好,它保留了个人信息不同维度的信息。

  • 而采用列表list存储就会造成维度信息丢失。
  • 我的理解:
    • 列表在存放数据的时候,每一个子元素,一般包含的信息是,只有2项。1项是,位置,另1项是事物的信息。
    • 字典在存放数据的时候,每一个子元素,一般包含的信息是,也是2项。1项是,属性,另1项是事物的信息。
    • 也就是对于这项信息,我们是否需要包含属性,or,维度 or 状态 ,如果需要就用字典,如果不需要就用列表。
    • 字典比列表多了一个描述信息,这个对信息的一个描述,对变量值的一个描述,对liqi是name的一个描述。

 20.数据选择什么类型来实现?

  • 数据一定要考虑如何取出来,存不是目的,取才是目的。
  • 所以,数据类型一定要考虑,将来如何把这个数据取出来,取出来是否方便?

 21.运行符中/和//有什么区别?

  • 1个/ 表示除法
  • 2个//表示地板除,(只保留整数部分,不是四舍五入)
  • 比如 10/3 = 3.333333 ;10//3 = 3

 22.Python是一种强类型,动态,解释型语言是什么意思?

  • 强类型,是指 字符串不能和数字进行运算。边界很严格。(shell是一种弱类型语言)
  • 动态,是指,只有运行到这一行的时候,才能确定。
    •   比如 python定义age = 18 , 而 go 语言定义是 var age int = 18
  • 解释型,是指,每次运行都要翻译。

23.举一个例子,说明Python和shell的不同?

  • 判断数字10和字符串10是否相等
  • 在shell中是相等的,在python中是不相等的。
  • shell中:
  • python :

24.Python中+可以用于字符串拼接吗?

  • 可以。
  • 但效率不够高。拼接"abc"+"def" 会开辟1个新的内存空间来存储新的字符串"abcdef"。

25.Python中拼接字符串有哪些方式?

26.Python中的错误分为几种?

  • 两种。一种是语法错误,一种是逻辑错误。
  • 语法错误,是在程序运行前,检查的。发现出错,整个文件都不能运行。比如【print( 】少了个右括号
  • 逻辑错误,是在程序运行时,检查的。一旦发现某一行有错误,之前的可以执行,之后的不能执行。
  • 写程序的时候,语法错误不能犯,(pycharm会提示你),逻辑错误尽量不犯,(不可能有完美的逻辑)

 27.一句话总结运算符是什么?

  • 操作数据的符合。(运算+-*/,比较<>!==,赋值=,成员in,身份is)参考egon

28.简化代码是不是一件好事?

  • 不一定。
  • 在不丧失代码的可读性的情况下,简化是一件好事。

29.等号=的左边是赋值,右边是取值?

  • 对的。
  • age = age + 1 ,左边的age是赋值,右边的age是取值。

30.解压赋值是什么意思?

  • 利用 *
  •  

     

  •  

     

31.Python中_有什么特殊的含义吗?

  • _这个符合一般代表,我们不想要的数据,存给_
  • 比如

32. not,and,or优先级是?

  • not > and > or

33.短路原则是什么?

  • # 短路原则
    print(1 > 0 and 1 != 1 and print("我执行了吗?")) # 判断到1 != 1 就结束了。

     

34.隐式布尔值是什么意思?

  • 当在变量单独的出现在判断条件中,比如下面这个:(也是常用的场景)

 

x = 123
if x:
    print("x为真,执行xxx")
  • 这里面需要记住,大多值都代表真True
  • 需要特殊记忆的,代表False的有
0 None 空
  • 这里面【空】是指,空字符,空列表,空字典等等。

 

posted @ 2022-11-19 20:18  o蹲蹲o  阅读(11)  评论(0编辑  收藏  举报