内置函数

官方文档:https://docs.python.org/3/library/functions.html

python 提供了许多内置函数,可以在程序中直接使用,当不清楚某个函数的用途时,可以在命令行中使用 help(name) 查看帮助信息

内置的数据格式转换函数:

  • int():转换成整型
  • str():转换成字符串
  • float():转换成浮点数
  • bool():转换成布尔值

进制转换:

  • bin():二进制
  • oct():转换成八进制
  • hex():转换成十六进制

注意:在 python 中函数是一等公民 ,即可以将函数对象赋值给一个变量

函数定义

函数定义的细节:

  1. 声明一个函数:使用 def 关键字,后接函数名、括号、括号中的入参和冒号,然后在缩进块中编写函数体,函数的返回值使用 return 语句
  2. 参数检查:在调用函数时,如果参数个数不对、参数类型不对等时会抛出 TypeError 异常
  3. 函数返回值:

    • 支持多个参数的返回值,返回值是一个元组 tuple,然后支持多个变量接受一个 tuple ,按位置赋值
    • 如果没有显式声明 return,则会默认返回一个 return None
      1. # 使用 pass 语句定义一个空函数
      2. def func_name():
      3. pass
      函数参数的细节:
  4. 支持函数定义时对入参设置默认值,但默认值必须指向不变对象

  5. 支持可变参数:支持传入0个或任意个参数,这些可变参数在函数调用时自动组装成一个tuple
    • 在参数名前面加 *,参数就会变成可变参数
    • 可变参数支持传入列表,不过需要使用 * 进行解包
  6. 关键字参数:允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装成一个 dict ```python
    #################### 参数默认值

    函数定义默认值指向可变对象的问题:

    python 函数在定义的时候,默认参数li的值就创建出来了,即[],因为默认参数li也是一个变量,

    它指向对象[],每次调用该函数,如果改变了li的内容,则下次调用时,默认参数的内容就会改变,而不是

    函数定义时的[]

    def add(name=’Lily’, li=[]): li.append(name) return li

if name == ‘main‘: name_list = add() print(name_list) # [‘Lily’] name_list = add() print(name_list) # [‘Lily’, ‘Lily’]

默认值指向不可变的对象就不存在此问题,如 str、None

def add(name=’Lily’, li=None): if li is None: li = [] li.append(name) return li

if name == ‘main‘: name_list = add() print(name_list) # [‘Lily’] name_list = add() print(name_list) # [‘Lily’]

#################### 可变参数

def calc(*numbers): add = 0 for val in numbers: add += val return add

if name == ‘main‘:

  1. # 可变参数支持传入多个参数
  2. print(calc(1, 2, 3, 4, 5))
  3. # 当传入tuple和list可变参数时,需要用*进行解包
  4. print(calc(*(1, 2, 3, 4)))
  5. print(calc(*[1, 2, 3, 4, 5]))
#################### 关键字参数

def hello(**kwargs): kwargs[‘age’] = 20 print(kwargs)

if name == ‘main‘: hello(name=’Bob’, age=18) # {‘name’: ‘Bob’, ‘age’: 20}

  1. # 传入的user参数一份拷贝,因此在函数内部所作的改动不会影响外部的user
  2. user = {'name': 'Bob', 'age': 18}
  3. hello(**user) # {'name': 'Bob', 'age': 20}
  4. print(user) # {'name': 'Bob', 'age': 18}
####################### 关键字函数

由于使用 **kwargs 参数时传入的参数不受限制,因此在处理该参数时需要 in 关键字进行判断

如果需要限制关键字参数的名字,可以使用命名关键字参数,格式: *, arg1, arg2

注意事项:

1.关键字参数属于必须参数

2.关键字参数传入时必须使用 key = value 这种方式

def func(name, *, age, city): print(“name = %s,age = %s,city = %s” % (name, age, city))

if name == ‘main‘: func(“Bob”, age=18, city=”Beijing”)

  1. python的支持的参数:必选参数、默认参数、可变参数、关键字参数、命名关键字参数<br />这5种参数支持组合使用,但必须按照一定的顺序,即:**必选参数、默认参数、可变参数、命名关键字参数和关键字参数**
  2. ```python
  3. def func(a,b,c=0,*args,**kwargs):
  4. pass