黑马程序员技术交流社区

标题: 【上海校区】Python入门基础知识笔记 [打印本页]

作者: 不二晨    时间: 2019-1-2 09:00
标题: 【上海校区】Python入门基础知识笔记
冯诺依曼架构

控制器
运算器
存储器
输入设备 (I)
输出设备 (O)
CPU——控制器,运算器 # 运算器只与内存交换数据
内存——存储器
硬盘——输入设备,输出设备(向存储器输入数据,写入存储器输出的数据)
键盘,鼠标——输入设备(向计算机输入指令
显示器,打印机,音响等——输出设备


python的语言类型

python是动态语言,强类型语言

静态编译语言

事先声明变量类型,类型不能更改
编译时检查
动态编译语言

不用事先声明类型,随时可以赋值为其他类型
编程时不知道是什么类型,很难推断(编译时无法检查,只有运行时才能检查)
强类型语言

不同类型之间操作,必须先强制类型转换为同一类型
弱类型语言

不同类型之间可以操作,自动隐式转换
基础语法

基础数据类型

注释

由符号#标注的文字

数字

整数 不区分短整型和长整型

进制 :二进制(0b01),0o10,十六进制(0xa)
布尔型 : True 、False
浮点数

1.2、3.1415、-0.12、146e9等价于1.46*10 9次方
复数

1+2i,1-2j
字符串

使用’ "单双引号引用的字符的序列
‘’'和”””单双三引号
字符串前加R或r则该字符串不做特殊处理(转义字符无效)
转义字符

\ ,\t,\r,\n,’,"
tab:制表符,用在对齐打印,通常为了补足4个字符或者8个字符
\n:相当于enter, new line,下一行
缩进

舍弃了C等语言的花括号,用缩进代替层次关系
约定使用4个空格缩进
续行

在行尾使用\
如果使用各种括号,认为括号内是一个整体,内部跨行不用
标识符
运算符

算术运算符

运算符        含义        示例
+        加        1+2=3
-        减        3-1=2
*        乘        2*2=4
/        除        9/3=3.0
%        取模        5%2=1
**        指数运算        3**2=8
整除:返回除法的余数

自然除/结果是浮点数,整除//。

位运算符

& | ~ ^ << >>

&(与):二进制的按位的相乘
0b1101 &
0b0001
=0b0001
|(或):按位相加(按位相加不进位,0b10|0b11=3)
~:按位取反
^:按位异或
<<:
>>:
常用方式:乘除2的倍数,32//8相当于32>>3
bin(32)=0b100000 往右走3位 结果为0b100
12,0xc,0o14,0b1100
比较运算符

符号        含义        示例
==        等于        a == 3
!=        不等于        a != 3
>        大于        5 > 2
<        小于        7<13
>=        大于等于        a >= 2
<=        小于等于        b <= 7
返回一个bool值
1<‘1’(报错) 1==‘1’(False)
链式比较操作符
4>3>2
逻辑运算符

与或非 and or not
短路运算符
and 如果第一个表达式为False,则表达式一定为False
or 如果第一个表达式为True ,则表达式一定是True
赋值运算符

a = min(3,5)
+= (a=a+4等价于a+=4)
-=
*=
/=
//=
%=

成员运算符

in,not in
身份运算符

is , is not
运算符优先级

单目运算符>双目运算符
算数运算符>位运算符>身份运算符>成员运算符>逻辑运算符
记不住,用括号,       
长表达式,多用括号,易懂,易读
表达式Expression

由数字,符号,括号,变量等的组合
算数表达式
逻辑表达式
赋值表达式
Python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义
内存管理

变量无需事先声明,也不需要指定类型
python编程中一般无须关心变量的存亡,也一般不用关心内存的管理
python使用引用计数记录所有对象的引用数
当对象引用数变为0,他就可以被垃圾回收GC

计数增加:

赋值给其他变量就增加引用计数,例如x=3;y=x;z=[x,1]
实参传参,如foo(y)
计数减少:

函数运行结束时,局部变量就会被自动销毁,对象引用计数减少

变量被赋值给其他对象,例如x=3;y=x;4

有关性能的时候,就需要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求
查看引用计数

import sys

x = [ ]
print(1,sys.getrefcount(x))
print(2,sys.getrefcount([]))
y = x
print(3,sys.getrefcount(y),sys.getrefcount(x))
x = 5 #注意字面常量
print(4,sys.getrefcount(y))
print(5,sys.getrefcount(x))

z = 5
print(6,sys.getrefcount(x))

1 2
2 1
3 3 3
4 2
5 449
6 448
---------------------
转载,仅作分享,侵删
作者:Xiao.H
原文:https://blog.csdn.net/weixin_37687644/article/details/85557572



作者: 不二晨    时间: 2019-1-3 10:14
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2