Python 学习笔记 之 03 - 函数总结
函数总结
最基本的一种代码抽象的方式。
定义函数
使用def语句进行定义, return进行函数返回。
一旦执行导return,函数就执行完毕。
即使函数未指定return语句,函数执行完毕后也会进行return,只不过返回值是None,(return None, 可以简写为return) 。
将函数保存到文件,便于以后调用
可以将定义的函数定义保存到.py文件,在存放文件的目录中启动py解释器,使用from 文件名 import 函数名 来导入存放在文件中的函数, 文件名不加扩展名。
空函数
定义一个什么也不做的空函数,用来做占位符
def nothing():
pass
空函数做占位符,在后续开发中再对函数进行完善。
返回多个值
实际上函数返回的是单一值(一个tuple),因为tuple在返回时可以省略小括号,所以多个变量可以通过获取tuple元素位置的方式按照位置获取值。
函数的参数*
默认参数
def func(x,n=2)
定义参数时,必选参数在前,默认参数在后,否则报错。
当函数有多个参数时,把变化大的参数放在前面,变化小的参数放后面,变化小的参数就可以作为默认参数了。
可变参数
def func(*numbers)
传入参数的数量是可变的。在参数前加*后,参数接收到的是一个tuple,因此在不改变代码的情况下,支持传入任意个参数。函数调用时,传入的任意个参数会自动组建为一个tuple。
调用可变参数
如果已经有了一个list,想将list调用可变参数,可以直接在list前加*,就可以把list中的元素变为可变参数传递给函数。
>>> def fu(*n):
... r = max(n)
... return r
...
>>> fu([1,2,3,4,5])
[1, 2, 3, 4, 5] #直接用list的话,会被当做一个对象。
>>> fu(*[1,2,3,4,5])
5
关键字参数
def func(name,age,**otherinfos)
允许传入任意个携带参数名的参数,这些关键字参数在函数内部自动组建为一个dict。
也可以先将可选项组为一个dict,谭厚将dict转换为关键字参数传进度。
命名关键字参数
def func(name,age,*,sex,city)
# *后的参数都会被是为命名关键字参数,调用时必须传入参数名,否则报错,这一点和位置参数不同。当不指定参数名时,都会被函数认为成位置参数。
# 如果函数定义中已经有了一个可变参数,那么可变参数后面跟着的命名关键字参数就不再需要*了。
对于关键字参数,调用时可以传入任意个不受限制的关键字参数,至于到底传入了哪些参数,就需要在函数内通过【函数里定义的关键字参数】来检查,但是在调用函数时依然可以传入不受限制的关键字参数。如果要限制关键字参数的名字,就可以使用命名关键字参数。
命名关键字参数与位置参数看起来很像,位置参数要求必须传入,而命名关键字参数也要求参数必须传入(关键字参数却是可选),二者的区别在哪里?
位置参数是list中的一个必要元素,而命名关键字参数是dict中的一个必要元素。明明关键字参数更加灵活一些。
关于命名关键字参数的理解,在学过参数组合后会更好理解。
参数组合
函数的参数:
1.位置参数
2.默认参数 (x=xxx)
3.可变参数 (*something)
4.关键字参数 (**something)
5.命名关键字参数 (*,somgting)
在python中定义的函数,可以使用这五种参数进行组合。但是参数定义的顺序必须是:
必选参数->默认参数->可变参数->命名关键字参数->关键字参数
虽然可以组合多达5种参数,但不要同时使用太多的组合,否则函数接口的可读性和可理解性都会非常的差。
实际上,对于任意函数,都可以通过类似func(*canshu,**kw)的形式调用,无论它的参数是如何定义的。
>>> def testfunc(a, b, c=0, *de, **ee):
... print(a,b,c,de,ee)
...
>>> aa = [1,2,3,4,5,6,7,8,9,0]
>>> bb = {'w':'s', 'e':'d', 'r':'f' }
>>> testfunc(*aa,**bb)
1 2 3 (4, 5, 6, 7, 8, 9, 0) {'e': 'd', 'w': 's', 'r': 'f'}
#dict中的key不要和函数定义的变量重合噢,如果dict中有key为'a' ,那么这个参数传入后会报错的。
递归函数
函数内调用函数本身。
过深的递归会导致栈溢出。针对尾递归优化的语言可以通过尾递归优化的方式防止栈溢出,
def jx(n):
if n == 1:
return 1
return n * jx(n - 1)
Python 学习笔记 之 03 - 函数总结的更多相关文章
- Python学习笔记之常用函数及说明
Python学习笔记之常用函数及说明 俗话说"好记性不如烂笔头",老祖宗们几千年总结出来的东西还是有些道理的,所以,常用的东西也要记下来,不记不知道,一记吓一跳,乖乖,函数咋这么多 ...
- Python学习笔记010——匿名函数lambda
1 语法 my_lambda = lambda arg1, arg2 : arg1 + arg2 + 1 arg1.arg2:参数 arg1 + arg2 + 1 :表达式 2 描述 匿名函数不需要r ...
- Python学习笔记:03语法
Python 语法 Python语法包括: 模块函数导入 赋值 判断循环语句 模块导入 import somemodule somemodule.somefunc from somemodule im ...
- Python学习笔记(Ⅱ)——循环/选择/函数
一.循环结构 python中提供了for循环和while循环两种操作,没有do……while语句. 1.for循环: 与其他语言中for循环的常见的写法如for (int i=0;i<10;i+ ...
- python学习笔记——高阶函数map()
满足以下两点中任意一点,即为高阶函数: 1.函数接收一个或多个函数作为参数 2.函数返回一个函数 1 描述 用函数和可迭代对象中每一个元素作为参数,计算出新的迭代对象 map() 会根据提供的函数对指 ...
- python 学习笔记6(函数)
函数 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 1.减少代码重复 2.保持代码的一致性 3.方便修改,可扩展性 函数的创建 #简单 ...
- python学习笔记12(函数三): 参数类型、递归、lambda函数
一.函数参数的类型 之前我们接触到的那种函数参数定义和传递方式叫做位置参数,即参数是通过位置进行匹配的,从左到右,依次进行匹配,这个对参数的位置和个数都有严格的要求.而在Python中还有一种是通过参 ...
- python学习笔记11(函数二): 参数的传递、变量的作用域
一.函数形参和实参的区别 形参全称是形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数. 实参全称为实际参数,在调用函数时提供的值或者变量称作为实际参数. >>> ...
- python学习笔记10(函数一): 函数使用、调用、返回值
一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,比如C语言),但是在Python中,函数声明和函数定义是视为一体的.在Py ...
随机推荐
- DjangoWeb _ 登录页开发test
1.数据库设计 user表 --id 自增 --username varchar(20) --password varchar(25) --add_time datetime 2.数据操作 新增 修改 ...
- Seay源代码审计系统使用
Seay源代码审计系统简介 Seay源代码审计系统使用 如何使用"Seay源代码审计系统"扫描源代码漏洞 Seay源代码审计系统下载安装 github-Seay源代码审计系统
- python-基础入门-5(模块、类和对象)
模块 模块用import来调用,例如 from sys import argv 调用sys中argv模块 在模块里有多个def的函数 import调用全部或其中一个 类和对象 下面定义了一个类 1 c ...
- 【建议收藏】阿里P7总结的Spring注解笔记,把组件注册讲的明明白白
环境搭建 注解的方式是通过配置类的方式来注入组件,注解注入要比XML注入的方式简单,注解注入也需要在前者的基础上,添加一个spring-context的包,也是实际开发中常用的方式. 准备所需Jar包 ...
- VMware与Device/Credential Guard不兼容问题
启动虚拟机vmware突然报不兼容错误 解决方法: 1首先打开控制面板>程序>启动或关闭Windows功能, 取消Hyper-v的勾选 2.在往下划,关闭Windows沙盒的勾选沙盒和虚拟 ...
- 顺序结构(C语言基本结构)
顺序结构 1.基本概念 语句执行的顺序与顺序程序书写的顺序一致 特点 a.程序执行的顺序和语句书写的顺序一致 b.有一个数据入口,一个数据出口 顺序结构与四则运算 顺序结构是C语言的基本结构 程序由上 ...
- 知识点:C语言进阶提高篇,自定义数据类型:枚举
一.枚举的概念 枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数.当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型.比如,你可以用一个枚举类型的变量来表示季节,因 ...
- 【mq读书笔记】mq producer启动流程
创建MQClientInstance实例.这里有个实例缓存 clienrId为客户端IP+instance+(unitname)注意到之前把instance替换为进程id,是为了instance为默认 ...
- SQL优化思路与解决方案
1.面对问题SQL的思考 这条查询SQL的语句到底有没有问题? 存在什么问题? 什么情况下存在问题? 怎么去优化? 2.SQL优化思路 where查询字段是否建立索引? 是否有建立索引但是查询时候没有 ...
- LeetCode 037 Sudoku Solver
题目要求:Sudoku Solver Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells ...