-
1.6Python中raw字符串与多行字符串
如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀r,表示这是一个 raw 字符串,里面的字符就不需要转义了。
但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串。
如果要表示多行字符串,可以用'''...'''表示。
还可以在多行字符串前面添加r,把这个多行字符串也变成一个raw字符串。
查看全部 -
1.5Python的字符串
字符串可以用' '或者" "括起来表示。
如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示,如果字符串包含",我们就可以用' '括起来表示。
如果字符串既包含'又包含",就需要对字符串中的某些特殊字符进行“转义”,Python字符串用\进行转义。
注意:转义字符 \不计入字符串的内容中。
要表示字符串Bob said "I'm OK"
'Bob said \"I\'m OK\".'
常用的转义字符还有:
\n表示换行
\t 表示一个制表符
\\表示 \ 字符本身查看全部 -
5-1什么是容器、什么是list
在程序中,容器是一种可以把多个元素放在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in等关键字判断某个元素是否包含在容器中。
在Python中,包括列表(list)、元组(tuple)、字典(dict)、集合(set)等,他们都可以放入多个元素,因此都可以算作是容器,这些容器是Python编程中非常重要的数据结构。
list
列表(list)是一种有序的容器,使用中括号[]把需要放在容器里面的元素括起来,就定义了一个列表。
list可以放入数字、字符串等数据类型,list不对放入其中的类型进行判断,也就是说,list可以同时放入任意类型的数据。
查看全部 -
dict提供keys()函数,可以返回dict中所有的key。
dict提供values()函数,可以返回dict中所有的value。
dict提供clear()函数,可以直接清除dict中所有的元素。
查看全部 -
常用的转义字符还有:
\n表示换行
\t 表示一个制表符
\\表示 \ 字符本身查看全部 -
需要注意的是,not计算的优先级是高于and和or的。
查看全部 -
dict查找速度快但占用内存大;list查找速度慢但占内存小
ditct元素无序
key不可变,因此tuple可做key,list不可
keys()会返回所有key
items()会返回dict中所有元素,每个元素包含key和value
查看全部 -
pop()方法需要指定需要删除的元素的key,并返回对应的value。但key不存在时,pop会引发错误。
查看全部 -
list可用extend()一次添加多个元素
查看全部 -
dict是可变的
查看全部 -
dict提供通过key找到对应value的功能,通过d[key]的形式,就可以得到对应的value。
dict本身提供get方法,把key当作参数传递给get方法,就可以获取对应的value,当key不存在时,也不会报错,而是返回None。
查看全部 -
函数会把可变参数当作tuple去处理,tuple在使用上有一定的局限性。
比如有时候想找到特定位置的参数,只能通过下标的方式去寻找,如果顺序发生变化得时候,下标就会失效,函数逻辑就得重新修改实现。
Python函数提供可变关键字参数,对于可变关键字参数,可以通过关键字的名字key找到对应的参数值。Python会把可变关键字参数当作dict去处理;对于可变关键字参数,一般使用**kwargs来表示。
对于一个拥有必需参数,默认参数,可变参数,可变关键字参数的函数,定义顺序是这样的:
def func(param1, param2, param3 = None, *args, **kwargs): print(param1) print(param2) print(param3) print(args) print(kwargs) func(100, 200, 300, 400, 500, name = 'Alice', score = 100)
这么多类型的参数,很容易导致出错,在实际使用上,不建议定义这么多的参数。
任务:
# 编写一个函数,它接受关键字参数names,gender,age三个list,分别包含同学的名字、性别和年龄,请分别把每个同学的名字、性别和年龄打印出来。
# Enter a code def info(**kwargs): tamplate = "name: {}, gender: {}, age: {}" name_list = kwargs.get('name') gender_list = kwargs.get('gender') age_list = kwargs.get('age') for i in range(len(name_list)): print(tamplate.format(name_list[i], gender_list[i], age_list[i])) names = ['Alice', 'Ash', 'Amy', 'Eloit', 'Himmy'] genders = ['girl', 'boy', 'girl', 'boy', 'boy'] ages = [13, 12, 14, 17, 14] info(name = names, gender = genders, age = ages)查看全部 -
除了默认参数,Python函数还接收一种参数叫做可变参数,可变参数即任意个参数的意思,可变参数通常使用*args来表示。
Python会把可变参数定义为一个tuple,所以在函数内部,把可变参数当作tuple来使用。以通过位置下标取出对应的元素。
定义可变参数的目的也是为了简化调用。
可变参数的长度可能是0,当长度为0的时候,就会出现除0错误。
因此需要添加保护的逻辑,这是同学在使用过程中需要特别注意的。
任务:
# 请完善average()函数,使得当可变参数长度为0的时候,也能正确返回结果。
# Enter a code def average(*args): if len(args) != 0: sums = sum(args) + 0.0 avg = sums / len(args) return avg else: return 0 print(average()) print(average(1, 2)) print(average(1, 2, 2, 3, 4))
查看全部 -
定义函数的时候,还可以有默认参数,默认参数的意思是当这个参数没有传递的时候,参数就使用定义时的默认值。
Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数。int()函数的第二个参数是转换进制base,如果不传,默认是十进制 (base=10),如果传了,就用传入的参数。函数的默认参数的作用是简化调用。
函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面,否则将会出现错误。
def power(x, n=2):
任务:
# 请定义一个 greet() 函数,它包含一个默认参数,如果没有传入参数,打印 Hello, world.,如果传入参数,打印Hello, 传入的参数内容.
# Enter a code def greet(s = "world"): tamplate = 'Hello,{x}.' print(tamplate.format(x = s)) greet() greet("Lv")查看全部 -
函数参数是需要传递给函数内部的数据。
函数参数可以是任意的数据类型,只要函数内部逻辑可以处理即可。
为了保证函数的正常运行,有时候需要对函数入参进行类型的校验。
Python提供isinstance()函数,可以判断参数类型,它接收两个参数,第一个是需要判断的参数,第二个是类型。
isinstance(100, int) # ==> True
任务:
# 请实现函数func,当参数类型为list时,返回list中所有数字类型元素的和,当参数类型为tuple时,返回tuple中所有数字类型元素的乘积。
# Enter a code def func(lt): if isinstance(lt, list): num_sum = 0 for x in lt: if isinstance(x, int) or isinstance(x, float): num_sum += x return num_sum if isinstance(lt, tuple): num_mul = 1 for y in lt: if isinstance(y, int) or isinstance(y, float): num_mul += y return num_mul return None L = ['areg', 1, 3, 5, 'a', 4] T = ('sh', 2, 3, 4, 0, 'fs') lt = func(L) tp = func(T) print(lt, tp)查看全部
举报