00_Python面试题_迭代更新

本文深入探讨Python语言的特点,包括其解释性、动态类型、面向对象编程能力等,并对比其他语言如C。此外还介绍了Python中的逻辑运算符及其优先级、Python2与Python3的主要区别、字符编码知识以及一些实用的编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Python是什么类型的语言,以及和其他语言对比

1.Python是一种解释性语言,他和C语言以及C衍生的语言不通,在Python运行之前不需要编译,其他解释语言还有Ruby、PHP。

2.Python还是动态类型语言,在声明变量期间,不要指定变量的类型,诸如:x = 100   name='Zhang San' ,程序不会报错

3.Python非常适合面向对象的编程(OOP),因为它支持通过组合(composition)与继承(inheritance)的方式定义类(class)。Python中没有访问说明符(access specifier,类似C++中的publicprivate),这么设计的依据是“大家都是成年人了”。

4.在Python语言中,函数是第一类对象(first-class objects)。这指的是它们可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输入。类(class)也是第一类对象。

5.Python代码编写快,但是运行速度比编译语言通常要慢。好在Python允许加入基于C语言编写的扩展,因此我们能够优化代码,消除瓶颈,这点通常是可以实现的。numpy就是一个很好地例子,它的运行速度真的非常快,因为很多算术运算其实并不是通过Python实现的。

6.Python用途非常广泛——web开发、人工智能、爬虫、云计算应用,等等。它也常被用作“胶水语言”,帮助其他语言和组件改善运行状况。

7.Python让困难的事情变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。

二、逻辑运算符

1.逻辑运算符 两边都是比较运算

and : 两个都为真,才为真,一个为假即为假

or : 两个有一个为真,即真;都为假,才假

not   : 相反,真not为假,假not 为真

 

逻辑运算符的 运算优先级:  ()  >  "> == < " > not > and > or

1  1,3>4 or 4<3 and 1==1   False                         
2  2,1 < 2 and 3 < 4 or 1>2  True
3  3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1   True
4  4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8   False
5  5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6   False
6  6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6  False
逻辑运算符

2.逻辑运算符 量表都为数字

1 8 or 4        8
2 0 and 3            0
3 0 or 4 and 3 or 7 or 9 and 6    3
逻辑运算符两边都是数字

三、Python 2 和 Python 3区别

1.语法差异 Python2中raw_print()  在Python3中是print().等等

2.编码差异:Python2中默认编码是ASCII ;Python3中默认编码是UTF-8

 

四、ASCII、UTF-8、Unicode、GBK区别

ASCII

上个世纪六十年代,美国制定了一套字符编码,对二进制和英语符号之间的关系,被称为ASCII

ASCII一共制定了256个字符编码。第一位全为0,只占用一个字节的后7位

Unicode

随着越来越多的编码方式的出现,急需一种能够包含全世界所有符号的编码系统来消灭乱码,这种编码系统就叫做Unicode。

Unicode只是一套编码系统,包含所有字符集,却并不规定编码后的二进制代码如何存储。

使用4个字节存储每一个字符,但是对于英文字符来说,使用ASCII编码只需1个字节即可存储,这极大的浪费了存储空间。

UTF-8

因此出现了一种变长的编码方式UTF-8,UTF-8是使用得最广泛的Unicode编码实现方式,使用1-4个字节表示一个字符,根据不同的字符变化长度。比如对于英文字符,1个字节就够了,但是对于中文,可能需要2-4个字节才能存储。

五、表达式

5.1 a = 1 ,b = 3一行代码,  让a,b值互换

1 a,b = b,a

 六、Python什么情况下会产生浅拷贝:

  1. [:]切片操作
  2. 使用工厂函数
  3. 使用copy模块中copy()函数

七、send()和__next__()的区别

1.send()拥有__next__()一样的功能

2.send()可以放第一行,前提send(None)才行

3.send()可以给最后一个yield传值,但是获取不到

八、手写个装饰器  - 简单的万能装饰器

 1 def wrapper(func):
 2     def inner(*args,**kwargs):
 3         ret = func(*args,**kwargs)
 4         return ret
 5     return inner
 6 
 7 @wrapper
 8 def func():
 9     pass
10 
11 func()

九、终极-万能装饰器

 1 flag = False
 2 def wrapper_out(flag):
 3     def wrapper(func):
 4         def inner(*args,**kwargs):
 5             if flag:
 6                 '''函数执行前的操作'''
 7                 ret = func(*args,**kwargs)
 8                 '''函数执行后的操作'''
 9                 return ret
10 
11             else:
12                 '''函数执行前的操作'''
13                 ret = func(*args, **kwargs)
14                 '''函数执行后的操作'''
15                 return ret
16         return inner
17     return wrapper
18 
19 @wrapper_out(flag)
20 def func():
21     pass
22 
23 func()

 

转载于:https://www.cnblogs.com/weihengblog/p/8330685.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值