python_函数
数据类型转换:
Python内置的常用函数还包括数据类型转换函数,比如int()
函数可以把其他数据类型转换为整数:
>>> int('123') 123 >>> int(12.34) 12 >>> float('12.34') 12.34 >>> str(1.23) '1.23' >>> str(100) '100' >>> bool(1) True >>> bool('') False
pass
语句什么都不做,那有什么用?实际上pass
可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass
,让代码能运行起来。
缺少了pass
,代码运行就会有语法错误。
关键字参数有什么用?它可以扩展函数的功能。比如,在person
函数里,我们保证能接收到name
和age
这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。
和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去:
extra = {} def person(name, age, **extra): print('name:', name, 'age:', age, 'other:', extra) person('jack',24, city = 'Beijing', job = 'stu', zipCode = 123) 打印:name: jack age: 24 other: {'city': 'Beijing', 'job': 'stu', 'zipCode': 123}
如果要限制关键字参数的名字,就可以用命名关键字参数
def checkName(name, age, *,city ='Nanjing',job): print('命名关键字参数:name:%s age:%s %s %s' % (name, age, city, job)) checkName('shb',28,job='stu') 打印:命名关键字参数:name:shb age:28 Nanjing stu
清除数据操作
a = [1, 2, 3, 4] >>> print (a) [1, 2, 3, 4] >>> b = a.clear() >>> print (b) None
复制数据操作
>>> a = [1, 2, 3, 4] >>> b = a.copy() >>> print (b) [1, 2, 3, 4]
获取元素下标操作
>>> a = [1, 2, 3, 4] >>> b = a.copy() >>> print (b) [1, 2, 3, 4] >>> c = b.index(3) >>> print (c) 2
插入元素操作
b.insert(2,'shb') >>> print (b) [1, 2, 'shb', 3, 4]
删除列表最后一个元素,并返回该元素操作
>>> b.pop() 4 >>> print (b) [1, 2, 'shb', 3]
删除制定元素操作
[1, 2, 'shb', 3] >>> b.remove('shb') >>> print (b) [1, 2, 3]
find函数,在字符串中查找子串,返回值代表找到该数据的下标
title = 'shb is a superman' >>> title.find('a') 7
find 函数指定起点和重点索引 查找
#title = 'shb is a superman' >>> title.find('s',1,10) 5
.......后面还有很多有用的函数,不一一介绍。
小结
Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。
默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!
要注意定义可变参数和关键字参数的语法:
*args
是可变参数,args接收的是一个tuple;
**kw
是关键字参数,kw接收的是一个dict。
以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1, 2, 3)
,又可以先组装list或tuple,再通过*args
传入:func(*(1, 2, 3))
;
关键字参数既可以直接传入:func(a=1, b=2)
,又可以先组装dict,再通过**kw
传入:func(**{'a': 1, 'b': 2})
。
使用*args
和**kw
是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。
定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*
,否则定义的将是位置参数。