Python 自学Day 1
8.25 库米云微实习Day2
Python基础
一、标识符
1、首字符为 _(下划线) 或 字母
2、py 对大小写是敏感的
二、保留字
Py的标准库中提供了一个keyword 模块,可以输出当前版本的所有关键字
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', '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']
三、注释
1、单行注释
#print("hello world")
2、多行注释
'''
print("hello world")
print("hello world")
'''
#或者
"""
print("hello world")
print("hello world")
"""
BlingBling小技巧 1
输出一个函数中的注释信息
def a():
"""这是注释鸭~~~"""
pass
print(a.__doc__)
输出:
这是注释鸭~~~
经过本人的测试发现只能输出单引号或者双引号中的注释,#是不行哒
四、行与缩进
Py一大特点(sang xin bing kuang)就是使用缩进来表示代码块,从而不用大括号 { } 来表示代码块。以写出py独有的优雅、大方、简洁、美观、的代码。C++选手表示接受不了
缩进的空格数是可以变的,但是属于相同代码块的语句必须包含相同的缩进格数。
if True
print("Right")
else
print ("Wrong")
但如果缩进不一致,就会导致错误
if True
print("Right")
else
print ("Wrong")
print("hello world") #缩进不一致,会导致运行错误
我已经隐约感觉到这将会是我将来最常出错的地方23333
五、多行语句
据说Py通常是一行写完一句代码,那么有人就会问了:
代码太长了怎么办鸭~
身为一个经常被长度过长困扰的男子, 可以用这样的办法
反斜杠(\)来实现分行
num = num_first+ \
num_second+ \
num_third
如果语句是写在 [ ] { } ( ) 中的话,就不用 \ 辣
total=['num_one','num_two'
'num_three','num_four']
六、空行
因为在写Py代码的时候,代码块之间的分隔不像有 { } 的语言一样容易区分,所以我们在写函数,类中的方法的时候,就尽量在不同函数或方法之间敲一行空行,便于我们自己区分代码块,也同时方便了我们后续的修改和重构。
当然,如果不加入空行,Py解释器也不会认为错误,但是如果加了空行,空行也自然成了代码的一部分。
七、单行代码多条语句
如何在同一行中写多个语句呢,可以在语句中加分号隔开就行了。当让我本人不建议这么写,太不美观了说。
追求代码行数最少的选手绕道
import sys; x = 'yujia666'; sys.stdout.write(x + '\n')
会输出:
yujia666
上面一些比较零碎的点大概说完了,下面开始具体部分具体学习辣~~
Python运算符
因为运算符大部分语言都是通用的,我这里只列出Py与C++ 运算符不同的、或者新型的运算符
一、算术运算符
下面的例子 :a = 10 b = 25
- / (除以) :这里与整除不同,这里的 / 就是除以 例:b / a = 2.5
- //(取整除):向下取整 例:b // a =2
- ** (幂运算):x**y 返回 x的y次幂
- ’+‘ 、’ - ‘ 、’ * ‘ 、’ % ‘ 与C++ 同
a , b = 11 , 2
print(a/b)
print(a//b)
print(a**b)
输出:
5.5
5
121
二、比较运算符
这里没啥新东西
- ‘==’ 等于
- ‘!=’ 不等于
- ‘>’ 大于
- ‘<’ 小于
- ‘>=’ 大于等于
- ‘<=’ 小于等于
三、赋值运算符
运算符 | 功能 | 栗子鸭 |
---|---|---|
= | 简单的赋值运算符 | b=a |
+= | 加法赋值运算符 | b+=a 等价于 b=b+a |
-= | 减法赋值运算符 | b-=a 等价于 b=b-a |
*= | 乘法赋值运算符 | b*=a 等价于 b=b*a |
/= | 除法赋值运算符 | b/=a 等价于 b=b/a |
%= | 取模赋值运算符 | b%a 等价于 b=b%a |
**= | 幂赋值运算符 | b**=a 等价于 b=b**a |
//= | 取整赋值运算符 | b//=a 等价于 b=b//a |
:= | 海象运算符(Python 3.8 版本新增运算符)用于在表达式内部为变量赋值 | 官方给出的例子:if(n:=len(a)>10): print(f"List is too long ({n} elements, expected <= 10)") |
BlingBling 小技巧2
这里简单说一下海象运算符,我目前的理解是,在Py中,如果要在表达式内做赋值运算的话,就需要用到这个海象运算符。官方给出的解释还有一条:可以避免函数调用多次,来节省运算时间。那我们就看一哈官方的例子
if(n:=len(a)>10):
print(f"List is too long ({n} elements, expected <= 10)")
官方的意思就是说,如果你不这么写的话,那就是这样:
if(len(a)>10):
print(f"List is too long ({len(a)} elements, expected <= 10)")
这样写的话 len() 函数是不是就被执行了两遍?所以就慢了23333
你品,你细品
想要了解更多内容去看这篇文章咯:
传送门 : 海象运算符详细内容
四、位运算符
这个也都是一样滴
运算符 | 描述 |
---|---|
& | 按位与:同1为1,否则为0 |
I | 按位或:有1为1,全0为0 |
^ | 按位异或:不同为1,相同为0 |
~ | 按位取反;0变1,1变0 |
<< | 左移:运算数的二进制位所有向左移动一位,高位舍弃,低位补0 |
>> | 右移:运算数的二进制位所有向右移动一位,低位舍弃,高位补0 |
例子:(上代码!)
a = 0b00111100 #60
b = 0b00001101 #13
'''
0b用于直接对变量赋值二进制数
bin()用于输出二进制数
'''
print(a&b,end=" ");print(bin(a&b))
print(a|b,end=" ");print(bin(a|b))
print(a^b,end=" ");print(bin(a^b))
print(~a,end=" ");print(bin(~a))
print(a>>2,end=" ");print(bin(a>>2))
print(a<<2,end=" ");print(bin(a<<2))
输出:
12 0b1100
61 0b111101
49 0b110001
-61 -0b111101
15 0b1111
240 0b11110000
五、逻辑运算符
还是与或非那一套,与C++ 无非就是符号不同
描述 | C++ | Python |
---|---|---|
逻辑与 | && | and |
逻辑或 | II | or |
逻辑非 | ! | not |
六、成员运算符
这个运算符我是真心很喜欢,能够直接告诉你某一个元素在不在一个序列里。好有用鸭
运算符 | 描述 |
---|---|
in | 如果能在序列中找到该元素的值,返回true,否则返回false |
not in | 如果在指定的序列中找不到该元素的值,返回true,否则返回false |
上栗子鸭:
a=1
b=2
list=[1,3,5,7,9];
if(a in list):
print("a是在list中")
else:
print("a不在list中")
if(b not in list):
print("b不在list中")
else:
print("b是在list中")
输出:
a是在list中
b不在list中
七、身份运算符
身份运算符用于比较两个对象的存储单元是否相同,换句话说,比较两个元素的 id 是否相同(没看明白的话就去看下面的BlingBling小技巧3)
运算符 | 描述 |
---|---|
is | is 是判断两个标识符是不是引用自一个对象,是的话返回true,否则返回false |
is not | is not 是判断两个标识符是不是引用自不同对象,不是返回true,是就返回false |
上栗子鸭:
list=[1,2,3]
a=list
b=list
if(a is b):
print("a和b来源于同一对象")
print("id(a)=",id(a),"id(b)=",id(b))
else:
print("id(a)=",id(a),"id(b)=",id(b))
输出:
a和b来源于同一对象
id(a)= 2641299339840 id(b)= 2641299339840
相同对象,id相同
当我们随意修改一下a的值,使其与b不同再来看
list=[1,2,3]
a=20
b=list
if(a is b):
print("a和b来源于同一对象")
print("id(a)=",id(a),"id(b)=",id(b))
else:
print("id(a)=",id(a),"id(b)=",id(b))
输出:
id(a)= 140731215124736 id(b)= 2582734731648
id属性是8是不一样咯
BlingBling小技巧3
关于 is 和 ==的区别
可以说:is运算符比较的是id属性,而 == 运算符比较的是数值
id属性就像是身份证号,每一个对象(无论是一个数、一个字符串还是一个list,都有),表明了该对象在内存中的储存地址,是一个整数。如果两个变量被赋予了相同的对象,那么这两个变量的就都会指向同一个地址,也同时拥有了相同的id
而 == 仅仅比较数值是否相同
明白了叭~~
好啦Day1 差不多就学了这些,整理一下我们明天继续!!