Python基础——基础问题

python2和python3的区别

一、print区别

python2中print是一个打印语句,将python后面内容视为元组对象,直接打印出来
python3中print作为函数存在,print函数可以接受多个位置的参数书

二、编码区别

python2中默认编码方式为ASCLL编码,但ASCLL编码无法对中文等字符进行有效编码,因此python2中经常出现编码错
python3中默认使用utf-8格式编码,可以识别文字等符号

三、True和False

python2中True和False为全局变量,可以随意赋值
python3中True和False为两个关键字,指向两个固定的对象,不可赋值

四、nonlocal关键字

python2中不能在嵌套字中将一个变量声明为非全局变量
python3中加入了nonlocal关键字,可以在嵌套函数中给变量前面添加关键字nonlocal,就可以在嵌套函数之外使用嵌套函数中的变量

列表和元组区别

列表:

 1. 可以添加列表内容 append
 2. 可以统计某个列表段在整个列表中出现的次数count
 3. 可以插入字符串,并把整个字符串的每个字母拆分当成一个列表追加到列表中extedn
 4. 可以查询某个列表段在整个列表的位置 index
 5. 可以指定位置插入一个列表段insert
 6. 可以删除列表中最后一个列表段pop
 7. 可以删除指定列表中的某个列表段
 8. 可以正向反向排序 reverse
 9. 可以按字母或数组排序 sort
 10定义列表使用[] 

元组

 1. 可以统计某个元组段在整个元组出现的次数count
 2. 可以查询某个元组段在整个元组中的元组号 index
 3. 定义元组使用()
列表可以随意改变,元组的元素不可以改变

深拷贝和浅拷贝区别

深拷贝:除了对象本身被复制外,对象多包含的所有成员变量都会被复制,包括类型的成员对象(在计算机中开辟了一块新的内存地址用于存放复制的对象)
浅拷贝:只复制对象其中包含的值类型的成员变量,而引用类型的成员对象没有被复制(只是复制,原地址对象改变,被浅复制的也会改变

可变类型和不可变类型

不可变类型:在第一次复制的时候,会开辟一块空间,用于储存变量赋予的值,存放这个值的内存空间就是内存中的一个地址,而这个变量存储的并不是被赋值的值,而是存放吧这个值的内存地址,不可变就是指这个数据在内存中的值,所以当我们改变这个变量的赋值时,只是在内存中重新开辟了一块空间,将新的数据存放到新的内存地址里,而原来那个变量就不再引原数据的的内存地址,而是转换为引用新数据的内存地址了。
可变类型:第一次声明了一个可变数据类型的时候,同时开辟一个空间,并将所赋值的数据方在内存中,然后将这个变量指向数据所在的内存地址中,不同的是, 可变数据类型可以对内存中的数据直接进行修改, 并且不会导致变量引用地址的变化, 但是这种修改仅限于Python中的内置方法, 比如list.append(), list.remove(), dict.pop(), dict.clear()等, 如果要是进行重新赋值的操作的话, 一样会改变变量的地址指向。而且当变量重新指向了新的内存之后,之前的内存也就被自动回收了。

python中is和==区别

is:比较两个对象的id值是否相等,也就是比较两个对象是否为同一个实例对象,是否指向相同一个内存地址
= =:比较两个对象的内容是否相等,默认会调用对象的__eq__()方法

python常用的内置函数

函数功能
abs()返回绝对值
chr()返回整数所有字符
divmod(x,y)返回除以y的商及余数组成的元组
float转换位浮点数
hex转换为十六进制
int转化为整数
len返回参数元素个数
max返回参数中最大值
min返回参数中最小值
oct转化为八进制
ord返回字符Unicode编码
pow(x,y)返回x的y次方
round返回四舍六入值
sorted由小到大排序
str转换为字符串
sum计算列表中元素的总和
type返回对象的数据类型

python常用的模块

  1. os模块:路径
  2. re模块:正则表达式
  3. sys模块:标准输入输出
  4. math模块:数字公式
  5. json模块:字符串与其他数据类型转换
  6. pickle模块:序列化
  7. random模块:生成随机数
  8. time模块:时间模块
  9. request模块:http请求库

递归

一个函数在内部调用自己本身,这个函数就是递归函数
递归特征:

  1. 递归函数必须有一个明确的结束条件
  2. 每进入更深一层的递归时,问题规模相对于上一次递归减少
  3. 相邻两次重复之间有紧密联系,前一次为后一次做准备
  4. 递归效率不高,递归层次过多会导致栈溢出

递归函数的优点:定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。
递归函数的缺点:使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

#查看最大递归层数
def recursion(n):
    print(n)
    n += 1
    recursion(n)
recursion(1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值