python3基础知识

Python特点

  1. 面向对象、解释型的编程语言
  2. 使用缩进作为逻辑层次
  3. 运行效率低

基本数据类型

布尔型(bool) : True False

空值(None)

除法用/,整除用//

>>> 1//2
0
>>> 1/2
0.5

判断变量类型

isinstance() 判断变量类型

>>> isinstance(3,(str,int))
True

type()查看变量类型

>>> isinstance(100, int)
True
>>> isinstance('3.1415926', str)
True

>>> type(1)
<class 'int'>

>>> type(a) is int
True
>>> type(a)==int
True

>>> isinstance(3,(str,int))
True

二进制八进制十六进制

  • 二进制在数字前面加0b
  • 八进制在数字前面加0o
  • 十六进制在数字前面加0x
>>> 0b10
2
>>> 0o10
8
>>> 0x10
16

进制转换

转换为二进制bin()

>>> bin(10)
'0b1010'
>>> bin(0o7)
'0b111'
>>> bin(0xE)
'0b1110'

十进制转换int()

>>> int(0b111)
7
>>> int(0o7)
7

十六进制转换hex()

>>> hex(888)
'0x378'
>>> hex(0o7)
'0x7'
>>> hex(0x16)
'0x16'

八进制转换oct()

>>> oct(0b111)
'0o7'
>>> oct(0xa)
'0o12'
>>> int(0xa)
10

bool类型

bool类型是数字的一种

>>> int(True)
1
>>> int(False)
0
>>> bool(1)
True
>>> bool(0)
False

>>> bool('abc')
True
>>> bool('')
False
>>> bool([1,2])
True
>>> bool([])
False
>>> bool(None)
False

字符串

raw字符串

在字符串前面加个前缀r,表示这是一个 raw 字符串,里面的字符就不需要转义了

r'\(~_~)/ \(~_~)/'

但r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串

多行字符串

'''Line 1
Line 2
Line 3'''


r'''Python is created by "Guido".
It is free and easy to learn.
Let's start learn Python in imooc!'''

单双引号换行

>>> 'hello\
world'
'helloworld'

format处理字符串格式

字符串format由两个部分组成,字符串模板和模板数据内容组成,通过大括号{},就可以把模板数据内容嵌到字符串模板对应的位置。

# 字符串模板
template = 'Hello {}'
# 模板数据内容
world = 'World'
result = template.format(world)
print(result) # ==> Hello World

# 或者直接写成
print('Hello {}'.format('World')) # ==> Hello World

#指定顺序
# 调整顺序
template = 'Hello {3}, Hello {2}, Hello {1}, Hello {0}.'
result = template.format('World', 'China', 'Beijing', 'imooc')
print(result) # ==> Hello imooc, Hello Beijing, Hello China, Hello World.


# 指定{}的名字w,c,b,i
template = 'Hello {w}, Hello {c}, Hello {b}, Hello {i}.'
world = 'World'
china = 'China'
beijing = 'Beijing'
imooc = 'imooc'
# 指定名字对应的模板数据内容
result = template.format(w = world, c = china, b = beijing, i = imooc)
print(result) # ==> Hello World, Hello China, Hello Beijing, Hello imooc.

变量

命名规则

  1. 变量名由大小写英文字母、数字和下划线_组成
  2. 变量不能用数字开头
  3. 变量尽量不要和Python关键字重合
  4. 系统关键字(保留关键字)不能用在变量名中,如and、import.

值类型与引用类型

 值类型(不可改变): int str tuple

引用类型(可变): list set dict

>>> a=1
>>> b=1
>>> a=3
>>> b
1
>>> a=[1,2,3]
>>> b=a
>>> a[0]='a'
>>> b
['a', 2, 3]

值类型

a=1 b=a(b同样指向数字1)

a=3

引用类型

a=[1,2,3] b=a

a[0]='1'

id()

显示变量在内存中的地址。

>>> a='hello'
>>> id(a)
1360792793200
>>> a=a+'p'
>>> id(a)
1360792467696

>>> a=[1,2,3]
>>> id(a)
1360792906112
>>> a[0]='1'
>>> id(a)
1360792906112

运算符

比较运算符

一个例子如下:

>>> b=1
>>> b+=b>=1
>>> b
2

#运算过程为:
>>> b=1
>>> b>=1
True
>>> b+=True # int(True)=1
>>> b
2

True与False也可以比较

>>> True>False
True

字符串、元组、列表、集合比较:

运算符两侧从前往后挨着一个个比较元素,如果相等,则比较下一个,否则得出结果True/False。

>>> 'ab'>'ac'
False
>>> [1,2]<[1,3]
True
>>> (2,1)>(1,3)
True
>>> {2,3}>{3,4}
False

逻辑运算符

not; and; or

逻辑运算and和or,返回结果取决于能决定执行结果的那个对象。对两侧进行逻辑运算时,如果当前那个对象 能得出结果(或者说结束运算),则返回这个值。

比如1 and 2,因为1为True,所以结果取决于第二个数(如果第二个数为真,则两边逻辑运算结果为真,否则为假),所以返回第二个数。

>>> 1 and 2
2
>>> 1 or 2
1
>>> 0 and 1
0
>>> 1 and 'a'
'a'
>>> not [1,2,3]
False
>>> {} or 3
3
>>> True and False
False
>>> False or True
True

#特殊写法
>>> a=3
>>> a>1 and a<4
True
>>> 1<a<4
True

成员运算符

in ; not in

判断一个元素是否在一组元素里面。注意:字典比较的是key。

>>> 'a' in 'ab'
True
>>> 'a' in {'a':2}
True
>>> 'a' in {2:'a'}
False
>>> 'ab' in 'ab'
True
>>> 1 not in {1,2}
False

身份运算符

is; is not 比较的是两个对象的内存地址; == 比较的是两个对象的值

对于 int, float, str类型,当两个变量值相等时,a is b为True,即两个标识符引用的是同一个对象。

>>> a,b=1,2
>>> a is b
False
>>> a==b
False
>>> a,b=1,1
>>> a is b
True
>>> a,b=1,1.0
>>> a==b
True
>>> a is b
False
>>> id(a)
2911615412528
>>> id(b)
2911654449552
>>> a='s'
>>> b='s'
>>> a==b
True
>>> a is b
True

对于元组、列表,当两个变量的元素一模一样但分别赋值时,a==b结果为True,a is b结果为False;对于集合、字典,因为是无序的,当两个变量的元素内容相同时,则a==b结果为True。

集合:无序,元素顺序不影响取值。

元组/列表:是序列,顺序影响取值

>>> a={1,2,3}
>>> b={2,1,3}
>>> a==b
True
>>> a is b
False
>>> a=(1,2,3)
>>> b=(1,2,3)
>>> a is b
False
>>> a==b
True
>>> a={2:1,1:2}
>>> b={1:2,2:1}
>>> a==b
True
>>> a is not b
True

>>> a=[1,2]
>>> b=a
>>> a is b
True

循环语句

while/for后面也可以跟else。 

condition = True
while condition:
    print('i am while')
    condition=False
else:
    print('end!!')

# 执行结果
i am while
end!!


a=[1,2,3]
for item in a:
    print(item)
else:
    print('end!!!')

# 执行结果
1
2
3
end!!!

# 若for循环执行过程中break,else语句不会执行。
a=[1,2,3]
for item in a:
    if item==2:
        break
    print(item)
else:
    print('end!!!')
# 执行结果
1

for range

for x in range(4,10): 
    print(x)
#执行结果4到9

for x in range(10):
    print(x)
#执行结果0到9

for x in range(0,10,2):
    print(x)
#每两个元素,执行结果为:0 2 4 6 8

for x in range(10,0,-2):
    print(x)
#递减,执行结果为10 8 6 4 2

函数

返回值

有时候函数是没有返回结果的,这个时候从函数获取到的是一个空值None。

函数返回多个值,用逗号分隔;

return C,S

可以使用一个变量存储函数返回的多值结果

可变参数

可变参数即任意个参数的意思,可变参数通常使用*args来表示。

Python会把可变参数定义为一个tuple

def func(*args):
    print('args length = {}, args = {}'.format(len(args), args))

func('a') # ==> args length = 1, args = ('a',)
func('a', 'b') # ==> args length = 2, args = ('a', 'b')

可变关键字参数

可以通过关键字的名字key找到对应的参数值,Python会把可变关键字参数当作dict去处理

可变关键字参数,一般使用**kwargs来表示)

def info(**kwargs):

    print('name: {}, gender: {}, age: {}'.format(kwargs.get('name'), kwargs.get('gender'), kwargs.get('age')))



info(name = 'Alice', gender = 'girl', age = 16)

注解

:str参数类型

-> set 函数返回值类型

def seach4vowels(word:str) -> set:

其他

  • 工厂函数用于创建某种类型的新的数据项,如set()
  • 函数下方用三重引号(文档字符串docstring),描述函数用途。
  • bool()根据括号中的值返回True/False

函数对象可以被赋值给变量

函数也是一个对象,函数对象可以被赋值给变量---->通过变量也可以调用该函数

>>> def now():

print('2016-4-19')

>>> f=now #f是个函数名

>>> f()

2016-4-19

>>> f=now() #f是调用函数后的返回值

2016-4-19

其他

pass

空语句/占位语句,作用是保持代码结构完整性。

if __name__=='__main__'

直接执行程序,活动命名空间是__main__,而如果把程序作为模块导入,活动命名空间是所导入的模块的名字。故有了:

if __name__=='__main__':

Tips

os.getcwd()

返回当前工作目录

sys.path

搜索模块的路径

pip

Package Installer For Python (Python的包安装工具)

pass语句:空语句/null语句,什么也不做

运行出现错误时,Python会产生一个特定类型的异常,并创建一个异常对象,它会作为参数传入except代码组。

pprint模块

(pretty print)可以采用一种更易读的格式显示任意的数据结构

只有当显示的内容足够多时,才会美化显示。

>>> import pprint

>>> pprint.pprint(peopel)

{'jack': {'age': 10, 'name': 'jack'},

 'lucy': {'age': 20, 'name': 'Lucy'},

 'tim': {'age': 30, 'name': 'tim'}}

Iterable判断迭代

如何判断一个对象是否可迭代,可通过collections模块的Iterable类型判断

>>> from collections import Iterable

>>> isinstance('abc',Iterable)

True

>>> isinstance([1,2,3],Iterable)

True

>>> isinstance(123,Iterable)

False

>>> isinstance({'a':1,'b':2,'c':3},Iterable)

True

enumerate实现索引-元素迭代

#通过BIF enumerate函数,可实现索引-元素 迭代

>>> for i,value in enumerate(['A','B','C']):

               print(i,value)

文件

  • print有个参数file,用来指定要写的文件流(文件名字)。
  • print写入文件时,也会每个print调用后面默认追加一个换行符。
  • print('adb',end='') 不会换行
  • print(req.form,file=log,end='|') 写入文件时,使用一个竖线作为行末值。
  • print(req.form,req.user_agent,res,file=log,seq='|') 写入三组数据,用|分隔。seq指定一个分隔值,默认为空格字符。
  • for循环中使用一个文件流时,每次读取文件中一行数据。
  • open打开一个文件时,除r模式,其他模式都会创建一个新的空文件。
  • with语句符合python中内置的一个编码约定,称为上下文管理协议。
#由于print默认换行,而文件中的各行都以一个换行字符结束,且这个换行符会作为数据行的一部分被读取,所以最后就会打印两个换行。
>>> for chore in tasks: #tasks是文件名字

print(chore)





Put out the trash.



Fedd the cat.



Prepare tax return.

read()

一次性读取文件的全部内容,返回一个字符串

readline()

读取一行,返回一个字符串

readlines()

读取多行,返回一个字符串列表

>>> with open('test.txt') as log:

t=log.readlines()

>>> t

['1\n', '2\n', '3']

>>> with open('test.txt') as log:

t=log.readline()

>>> t

'1\n'

>>> with open('test.txt') as log:

t=log.read()

>>> t

'1\n2\n3'

使用with打开,不用再写finally,with的代码组结束,就会自动调用close。

with语句利用了一种名为上下文管理协议(context management protocol)的python技术。

with open('bbb.txt') as data:

    print(data.readline())

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值