Python
1.Python基础
python是一门弱类型(PHP,python,Javascript,ruby)的语言,变量的类型不固定,当输入值是什么类型时,变量就会变成什么类型。
那什么是强数据类型语言(java,c,c++.c#)呢,当变量被定义后,则不允许存储其他的数据类型。
1.1变量的格式(可以发生变化的量):
- 只能含有数字,下划线,字母。
- 只能以下划线和字母开头。(不能以数字开头,因为变量和代码需要存储在内存中,而内存中的内存地址是以数字组成的,当变量开头为数字时,会使得机器误认为是内存地址,从而产生混淆。)
- 不能以保留字和关键字为变量名。
- 变量命名尽量规范,使得变量命有意义。(1.小驼峰法,除了首字母其他每个单词首字母大写;userAddress; 2.下划线法 user_address)
1.2 python关键字
查看Python的关键字
>>>import keyword
>>>dir(keyword)
['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'iskeyword', 'issoftkeyword', 'kwlist', 'softkwlist']
>>>keyword.kwlist
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
Python2默认采用ASCII编码,所以默认不支持中文;
Python3默认采用的utf-8编码。
1.3 注释
注释:对代码的解释说明,目的是为了让别人和自己很容易的看懂
- 单行注释:#
- 多行注释: ‘’’ ‘’’ “”" “”"(三个单引号和三个双引号),也可以每行开头使用#变为多行注释
- 中文注释(编码注释):可以声名编码方式,#coding:utf-8,#coding=utf-8,# *-* coding:utf-8 *_*
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kq2obpGy-1647781218528)(C:\Users\陈宇鹏\AppData\Roaming\Typora\typora-user-images\image-20220319161518735.png)]
交换数值的三种方式
#第一种方式:采用中间变量法,缺点是使用临时变量,占用空间内存地址;
num1=10
num2=20
print("交换前 num1=%s,num2=%s"%(num1,num2))
tmp=num1
num1=num2
num2=tmp
print("交换后 num1=%s,num2=%s"%(num1,num2))
#第二种方式:采用数学法
print("交换前 num1=%s,num2=%s"%(num1,num2))
num1=num1+num2
num2=num1-num2
num1=num1-num2
print("交换后 num1=%s,num2=%s"%(num1,num2))
#第三种方式:直接交换
print("交换前 num1=%s,num2=%s"%(num1,num2))
num1,num2=num2,num1
print("交换后 num1=%s,num2=%s"%(num1,num2))
1.4 数据类型:
-
基本数据类型
- 数值型(整数型,浮点型,复数)
- 布尔型(真 or 假)
- 字符串(单引号,双引号,三引号)
- None:代表空,也就是没有的意思
-
复合数据类型(指针,引用)【字典,列表,元组,结合等】
‘’‘万物皆对象’‘’
1.5 字符串的格式化输出
字符串格式化输出:python提供了多种字符串格式化输出的方式
- 1.通过%s占位 print("%s+%s=%s" %(a,b,a+b))
- 2.将其他类型全部转换为字符串,通过+拼接,统一输出 print(str(a) + “+” + str(b) + “=” + str(a+b))
- {}占位输出 print("{}+{}={}".format(a,b,a+b))
- 通过逗号显示变量print(a, b)
- print(f"{a}+{b}={a+b}")
1.6运算符
1.6.1 常见运算符:
- 算术运算符
- 关系(比较)运算符
- 逻辑运算符
- 赋值运算符
- 三目运算符
- 位运算符
1.6.2 算术运算符:
- + - * / % ** // (加,减,乘,除,,取余,次方,整除)
1.6.3 关系(比较)运算符:
> (大于) 、< (小于) 、>=(大于等于) 、<=(小于等于)、==(用于判断)、!=(不等于)
1.6.4 逻辑运算符:
and 并 or 或 not 不 优先级:not>and>or
1.6.5 所属运算符
所属运算符:判断一个值是否存在某个复合数据类型中
>>>arr = [1,2,3,4,5] #定义一个arr的列表
>>>1 in arr #判断1在不在arr列表里。
True
>>>11 in arr
False
>>>1 not in arr
False
>>>arr == None/arr is None/arr is not None/arr != None 判断列表是否为空
1.6.6 位运算符
a = 0011 1100
b = 0000 1101
a&b = 0000 1100 &:按位与运算符,两个都为1则为1,否则为0
a|b = 0011 1101 |:按位或运算符,有1时则为1
a^b = 0011 0001 ^:按位异或运算符,相同为0,不同为1
~a = 1100 0011 ~:按位取反运算符,0变1,1变0.
a << 2 为240 二进制解释:11110000 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
a >> 2 为15 二进制解释:00001111 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数
1.6.7 赋值运算符:
- = 将等号右侧的结果赋值给左侧
- += a +=10 <==> a = a + 10
- -=
- *=
- /=
- //=
- **=
- &=
python中没有自加和自减运算符,请使用+=或-+来替代!!!
1.6.8 三目运算符
变量 = 表达式 ? 结果1 : 结果2
1.6.9 原码、补码、反码
源码,反码,补码为了解决负数的二进制运算出错。
源码(原始的二进制码)
反码(符号位不变,其余取反)
补码(反码加一)
以-2为例 -2的原码位 1000 0010 反码位 1111 1101 补码位 1111 1110
2加-2就等于
0000 0010
1111 1110 +
------------------------
1 0000 0000 因为一个字节只有8个字节,故1会被溢出。
-2 + 1 = -1
0000 0001
1111 1110 (反码) +
---------------------
1111 1111(将这个反码变为原码 减一然后将1变为零,除符号位外) 1000 0001
以 -3 + 5 = 2 为例
1000 0011 -3原码 1111 1100 -3补码
1111 1101 -3反码
0000 0101 5的原码 +
-----------------------------------------
1 0000 0010 最前面的1溢出