10.了解Python3的类型注解么?
答:在 Python 3.5 中,Python PEP 484 引入了类型注解(type hints)。
类型注解(type hints)的好处是:
1).让别的程序员看得更明白。
2).让 IDE 了解类型,从而提供更准确的代码提示、补全和语法检查(包括类型检查,可以看到 str 和 float 类型的参数被高
亮提示)
3).这种类型注解实际上只是一种类型提示,对运行实际上是没有影响的,
比如调用 add 方法的时候,我们传入的不是 int 类型,而是一个 float 类型,它也不会报错,也不会对参数进行类型转换。
4).如:
def add(x:int, y:int) -> int: return x + yprint(add.__annotations__)
#在add.__annotations__,在函数的 __annotations__ 属性中会有你设定的注解。
图1
11.例举你知道 Python 对象的命名规范,例如方法或者类等。
答:
(1)类:总是使用首字母大写单词串,如 MyClass。内部类可以使用额外的前导下划线。
(2)变量:小写,由下划线连接各个单词。方法名类似.
(3)常量:常量名所有字母大写等。
12.Python 中的注释有几种?
答:总体来说分为两种,单行注释和多行注释。
(1)单行注释在行首是 #。
(2)多行注释可以使用三个单引号或三个双引号,包括要注释的内容。
图2
13.如何优雅的给一个函数加注释?
答:可以使用 docstring 配合类型注解。
函数注释通常在 def 语句下方,第一行表示函数用法,接下来对函数接受的参数进行解释,
最后对函数的返回值进行注释,方便他人理解函数的用法。
14.如何给变量加注释?
答:可以通过变量名:类型的方式如下
a: str = "this is string type"
15.Python 代码缩进中是否支持 Tab 键和空格混用。
答:不允许tab键和空格键混用,这种现象在使用 sublime 的时候尤为明显。一般推荐使用 4 个空格替代 tab 键。
16.是否可以在一句 import 中导入多个库?
答:可以是可以,但是不推荐。因为一次导入多个模块可读性不是很好,所以一行导入一个模块会比较好。
同样的尽量少用 from modulename import *,因为判断某个函数或者属性的来源有些困难,不方便调试,可读性也降低了。
17.在给 Py 文件命名的时候需要注意什么?
答:给文件命名的时候不要和标准库库的一些模块重复,比如 abc。 另外要名字要有意义,不建议数字开头或者中文命名。
使用全小写或者下划线进行命名。
18.例举几个规范 Python 代码风格的工具
答:pylint 和 flake8、YAPF,谷歌开发的代码规范工具。
Black,依赖Python3.6+的第三方库,可以直接将原代码变为符合PEP8标准的代码。
数据类型
字符串
19.列举 Python3 中的基本数据类型?
答:六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
我们所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:
counter = 100 # 整型变量miles = 1000.0 # 浮点型变量name = "runoob" # 字符串print (counter)print (miles)print (name)
20.如何区别可变数据类型和不可变数据类型
答:以下所有的内容都是基于内存地址来说的。
不可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,
对于这种数据类型,就称不可变数据类型。
可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,
对于这种数据类型,就称可变数据类型。
总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变。
-----------------------------
在python中数据类型有:整型,字符串,元组,集合,列表,字典。
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
----------------------------
21.将"hello world"转换为首字母大写"Hello World"
打开终端,进入python3.8
输入:
arr = "hello world".split(" ")new_str = f"{arr[0].capitalize()} {arr[1].capitalize()}"print(new_str)
即
Hello World
22.如何检测字符串中只含有数字?
答:Python的语法,字符串类型自带函数isdigit(),当字符串中只存在数字返回True,反之返回False。
可以综合使用any和isdigit方法:
def hasNumbers(inputString):
... return any(char.isdigit() for char in inputString) #return与has对齐,但在def之后
... #要回车下去
>>> hasNumbers("I own 1 dog")
True
>>> hasNumbers("I own no dog")
False
可以使用正则表达式:
>>> import re
>>> def hasNumbers(inputString):
... return bool(re.search(r'd', inputString)) #return与has对齐,但在def之后
... #要回车下去
>>> hasNumbers("I own 1 dog")
True
>>> hasNumbers("I own no dog")
False
图3
23.将字符串"ilovechina"进行反转
答:
s1 = "ilovechina"[::-1]
print(s1)
结果:
anihcevoli
24.Python 中的字符串格式化方式你知道哪些?
答:format()是最先进的。
三种字符串格式化方法
1).最方便的
print ('hello %s and %s' % ('df', 'another df'))
结果:
hello df and another df
2).最好用的
print('hello %(first)s and %(second)s' % {'first':'df', 'second':'another df'})
结果:
hello df and another df
3).最先进的
print ('hello {first} and {second}'.format(first='df', second='another df'))
结果:
hello df and another df
图4
25.有一个字符串开头和末尾都有空格,比如“ adabdw ”,要求写一个函数把这个字符串的前后空格都去掉。
答:
方法一:
def strip(string): start, end = 0, -1 length = len(string) for i in range(length): if string[i] != ' ': start = i break for j in range(-1, -length, -1): if string[j] != ' ': end = length + j + 1 break return string[start:end]s = ' adabdw 'print(s)
方法二:
def strip_function(s1): return s1.strip()s1 = " adabdw "print(strip_function(s1))
26.获取字符串”123456“最后的两个字符。
答:“123456”[4:6:]或“123456"[-2::]
即:
a = "123456"
print(a[4:6:])
或者
print(a[-2::])
27.一个编码为 GBK 的字符串 S,要将其转成 UTF-8 编码的字符串,应如何操作?
答:
a= "S".encode("gbk").decode("utf-8",'ignore')print(a)
28.
(1)s="info:xiaoZhang 33 shandong",用正则切分字符串输出['info', 'xiaoZhang', '33', 'shandong']
我们需要根据冒号或者空格切分
import res = "info:xiaoZhang 33 shandong"res = re.split(r":| ", s)print(res)
(2) a = "你好 中国 ",去除多余空格只留一个空格。
答:
s = "你好 中国 "print(" ".join(s.split()))
29. (1)怎样将字符串转换为小写
答:
(1) 使用字符串的 lower() 方法。
(2)单独使用单引号和双引号没什么区别,但是如果引号里面还需要使用引号的时候,
就需要这两个配合使用了,然后说三引号,同样的三引号也分为三单引号和三双引号,
两个都可以声名长的字符串时候使用,如果使用 docstring 就需要使用三双引号。