- 函数关键字
关键字是python内置的,具有特殊意义的标识符,自定义标识符命名时不可与之重复。共有33个关键字
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
函数是封装了一些独立的功能,可以直接调用,python内置了许多函数,同时可以自建函数来使用。
可通过以下代码查看python内置的关键字内容
关键字后面不需要使用括号,函数封装了独立功能,可以直接调用
- False:假的
- None:空的
- True 真的
- and逻辑与
- as为导入的模块取一个别名
- assert断言
- break用在循环语句,跳转到语句块的末尾
- class用来定义一个类
- continue和break相对应,跳到语句块的开头
- def用来定义一个函数或方法
- del删除
- elif全称是else if
- else 另外,用在if语句的多判断中
- except异常处理
- finally用在异常处理语句try-except-finally中
- for著名的for循环,可以用来遍历一个列表
- from字面意思,表示从一个包导入某个模块
- global在函数或其他局部作用域中使用全局变量
- if如果
- import导入
- in 在,后面跟一个列表、字典或字符串
- is逻辑判断
- lambda lambda表达式,函数式编程
- nonlocal在函数或其他作用域中使用外层(非全局)变量
- not逻辑非
- or逻辑或
- pass占位符,用来告诉Python这里不要考虑
- raise用来引发一个异常
- return函数返回
- try异常处理机制
- while while循环
- with使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作,注意该句话后面有一个冒号表示with语句
- yield用来构造一个生成器
https://blog.csdn.net/abc_12366/article/details/79602040
- 函数的定义
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
注意:函数块中的缩进是个很重要的事情。回车键有时候会自动对齐,但是tab和空格的缩进是不一样的。混用之后,就会提示错误。
解决方法:https://www.crifan.com/python_syntax_error_indentationerror/comment-page-1/
- 找到空格处
- 找到tab用错的地方,全部替换成回车键
保存在.py文件的函数定义,可以通过import调用
如:把my_abs()
的函数定义保存为abstest.py
文件了,那么,可以在该文件的当前目录下启动Python解释器,用from abstest import my_abs
来导入my_abs()
函数,注意abstest
是文件名(不含.py
扩展名)
空函数:pass
pass是占位符,(1)现在还没想好怎么写函数的代码,就可以先放一个pass
,让代码能运行起来。(2)
参数检查:数据类型检查可以用内置函数isinstance()实现:
- 函数参数与作用域
Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码
位置参数:调用函数时,传入的两个值按照位置顺序依次赋给参数x和n;函数就会根据括号内参数的定义的位置,来分别对应内部函数的变量,从而进行计算。
默认参数:定义默认参数要牢记一点:默认参数必须指向不变对象!如果是可变对象,程序运行时会有逻辑错误!
好处:可以简化函数的调用
注意事项:
一是必选参数在前,默认参数在后,否则Python的解释器会报错;
二是当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
可变参数:
定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*
号
调用函数时候不一样的。List或者tuple是cals([1,2,3])或者cals((1,2,3))。调用可变参数是cals(1,2,3)可以传入任意个参数,包括0个参数
*nums
表示把nums
这个list的所有元素作为可变参数传进去
当有一个list或者tuple的时候,在调用的时候在前面加上一个*号就可以直接调用了。
关键字参数:
作用:它可以扩展函数的功能。如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。
对应的是dict函数。
和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去。定义函数的时候,用**KW,调用的函数的时候,先定义一个字典,然后用**字典名,进入函数内计算。
**extra
表示把extra
这个dict的所有key-value用关键字参数传入到函数的**kw
参数,kw
将获得一个dict,注意kw
获得的dict是extra
的一份拷贝,对kw
的改动不会影响到函数外的extra
。
命名关键字参数:
作用:关键字参数,函数的调用者可以传入任意不受限制的关键字参数。至于到底传入了哪些,就需要在函数内部通过kw
检查
参数组合
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。对于任意函数,都可以通过类似func(*args, **kw)
的形式调用它,无论它的参数是如何定义的。
注:要注意定义可变参数和关键字参数的语法:
*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的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
- 函数返回值
函数体内部可以用return随时返回函数结果;
函数执行完毕也没有return语句时,自动return None。
函数可以同时返回多个值,但其实就是一个tuple。
在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值
参考网址: