python简易问答函数_python基础问答笔记

1.简述解释型和编译型编程语言的区别

编译型

一次性将所有程序编译成二进制文件

缺点:开发效率低  不能跨平台      优点:运行速度快

解释型

当程序执行时,一行一行的解释执行

缺点:运行速度慢                         优点:开发效率高 可以跨平台

2.存储单位的换算

1byte = 8bit

1kb = 1024byte

1mb = 1024kb

3.字符串格式化输出的方式

1. %s    %d       %s表示输出字符串   %d代表数字      %表示占位符       %% 第一个%表示转义符号  后面的%不是一个占位符

2.format            s="aaa{0}44{1}".format("kk",'uu')

4.编码的由来

电脑的存储和传输都是以0和1的方式来实现的 需要规定一个特定的位数长度来区分每个字符 这样就产生了不同的对照表

ASSIIC码表 每8个二进制位(8个长度的高低电频信号)来表示不同的英文字符 实际上只用了7个 最左边的位都是用0来表示

unicode编码(万国码) 一个中文用4个字节表示 能表示的字符数量为2^32

而世界上所有的文字字符加起来使用2^21即可全部表示出来 这样在传输的时候会浪费网络宽带 存储时候会浪费存储空间

utf-8 是unicode的升级版

1.   英文使用1个字节  欧洲字符使用2个字节

2.   每个中文字符用3个字节表示 节省了存储空间

GBK编码

每个中文字符占2个字节 只包含英文和中文字符的编码 不包含其它任何语言字符

5.各个类型和boolean对象的转换

数字  非0(包含正数和负数)的数字都是转换成True     只有0转换成False

""转换为False   其它字符串包含空格字符串都为True

None转换为False 其它任何对象为True

6.len函数返回值

返回值是传入对象的字符长度  而不是字节长度

字符和字节的区别:

1.字符不区分中英文        每个中文算一个字符   占3个字节

2.每个英文算一个字符    占一个字节

7.字符串操作

对字符串的任何操作都是会生成一个新的字符串 不会对原来的字符串产生任何影响

8.return关键字的用途

1.   return 是一个关键字 后面跟着函数的返回值

2.  函数一旦遇到return    立即结束整个函数  return后面的代码将不会被执行

9.字符串和列表之间的相互转换

1.str转换成list        str.split()

2.list转换成str        list.join()

10.可变数据类型         不可哈希数据类型     list    dict     set

不可变数据类型     可哈希数据类型        int   string   boolean

11.字典的key必须是不可变的数据类型    value可以是任意类型

所有的key最终都被哈希成一个数字 然后通过二分查找的方式查找到相关元素

字典适合存储大量的关系型数据

dic.setdefault() 没有就增加 有就不做操作

12.python2和python3的区别

python2

print不用加括号(可加也可不加)

有range()也有xrange()

raw_input()

默认编码为assiic码

python3

print必须加括号

只有range()没有xrange()

input()

默认编码为utf-8

str在内存中的编码是unicode编码 但是在磁盘存储和网络传输的时候不是unicode编码

bytes类型一般是utf-8 gbk 等编码方式

区分bytes类型是utf-8 还是gbk编码 只要看其16进制输出是两个字节(gbk)还是三个字节(utf-8)表示一个中文

13.  =和==和is和id()的区别

=      给变量赋值

==    比较两个变量的值是否相等

is     比较两个变量的内存地址是否相等

id()   获取变量的内存地址

14.数字,字符串(小数据池概念)  为了节省内存空间

在一个范围之内的数字或者一定长度的字符串的多个变量是会共用一块内存地址的

数字在(-5到206之间)

字符串:

1.不能含有特殊字符

如 a=6       b=6 那么a和b是共用一个内存地址

a=300  b=300 那么a和b不是同一个内存地址

15.str和bytes类型

str: 表现形式

英文: "a"

中文:"你好"

bytes: 表现形式

英文: b'a'

中文: b'\xe4\xbd\xa0\xe5\xa5\xbd'

str类型内容必须转换成bytes类型才能进程存储和转换

str.encode() > str转换成bytes类型 实质上是将unicode编码转成utf-8或者gbk

bytes.decode() > bytes类型转换成str 输出到屏幕或者终端

16.元祖集合列表

集合里面存储的元素必须是不可变的数据类型 元素无序 不重复

在循环列表和字典的时候不能直接去删除里面的元素

元祖如果只有一个元素而且不加逗号那么这个元祖就不是元祖类型而是包含变量的实际类型

17.文件断点续传

f.seek(3) seek是按字节为单位进行跳转的 英文1个字符算1个字节

中文字符的话如果是utf-8编码就必须是3的倍数 gbk编码就必须2的倍数

f.read() read是按字符来读取的 不是按照字节来读取的

f.seek()调整光标的位置和f.tell()获取当前的光标位置 配合实现文件的断点续传

18.文件内容修改

文件是不能修改的 要实现文件修改的功能

1.打开原文件的同时 打开一个新的文件

2.把原文件内容读取到内存中并把文件内容转换成str python对str进行修改操作

3.把修改后的str内容存储到新的文件中

4.删除原文件同时重命名新文件名称即可实现文件内容的修改

19.函数

返回值的三种情况

1.没有返回值

2.返回一个值

3.返回多个值

r1,r2=func()   func的多个返回值用多个变量接收

r=func()         func的多个返回值用一个元祖来接收

动态参数

1.参数定义顺序

首先是位置参数 然后是*args 最后定义默认参数(关键字参数)

def func1(*args):

for i in args:          args是一个元祖

print(i)

func1(1,2,3,4)

def func2(**kwargs):

for k,v in kwargs:    kwargs是一个字典

func2(a="aa")

2.动态分解实参

list=[1,2,3]

func1(*list)      实现效果    func1(1,2,3)

dic={"a":"aa","b":"bb"}

func2(**dic)     实现效果    func2(a=aa,b=bb)

3.可变类型的默认参数

def func3(l=[])

l.append("a")

print(l)

func3() l=['a']

func3() l=['a','a']

func3([b]) l=['b']

如果调用函数的时候没有给函数传递可变类型参数

那么每次调用函数的时候使用默认值参数会共用内存 它们操作的是同一个变量

4.命名空间(三种)

1.内置命名空间

python解释器一启动就可以使用的名字存储在内置的命名空间

内置的名字在启动解释器的时候就被加载到内存

2.全局命名空间

是python文件代码从上到下依次执行的时候被依次加载到内存的

存储的是全局变量名称和函数名称

3.局部命名空间

调用函数的时候会产生一个局部命名空间 存储函数内部定义的变量

当函数执行完毕后它对应的局部命名空间就会立即销毁

局部命名空间 可以使用内置命名空间和全局命名空间

全局命名空间 可以使用内置命名空间 不能使用局部命名空间

5.作用域(两种)

1.全局作用域

包含内置和全局命名空间的变量

2.局部作用域

函数内的变量

3.global 一定是全局作用域下的变量

nolocal关键字 向上找到的第一层局部作用域 不能找全局作用域下的变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值