python函数做n_【python】定义函数、参数、递归(n!)
函数###
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:
>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1
定义函数###
1)定义函数使用def,return是return None的简写
在Python交互环境中定义函数时,注意Python会出现...的提示。函数定义结束后需要按两次回车重新回到>>>提示符下
def my_abs(x):
if x >= 0:
return x
else:
return -x
2)可以将my_abs()的函数定义保存为abstest.py文件,在该文件的当前目录下启动Python解释器,用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名)
Paste_Image.png
注意:如果在.py文件中写的代码有问题(sublime中没有语法报错)则在导入函数时会出现语法错误
3)pass可以作为占位符,放在还没想好的函数过程中
4)数据类型检查isinstance()
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
5)Python的函数返回多值其实就是返回一个tuple
函数的参数###
1.位置参数:power(x, n)按照位置顺序依次赋给参数x和n
2.默认参数:def power(x, n=2) 这样传入一个参数时,第二个参数默认值为2
3.可变参数:允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
若已有一个list或者tuple,在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
4.关键字参数:允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict,kw是关键字参数
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
5.命名关键字参数:若要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。
>>>def person(name, age, *, city, job):
... print(name, age, city, job)
>>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer
1)命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。
def person(name, age, *, city, job):
2)若函数定义中已经有了一个可变参数,后面的命名关键字参数就不再需要一个特殊分隔符*了
def person(name, age, *args, city, job):
3)必须传入参数名,可有缺省值
>>>person('Jack', 24, city='Beijing', job='Engineer')
def person(name, age, *, city='Beijing', job):city有默认值,则调用时,可以不传入city值
特别注意:如果没有可变参数,就必须加一个*作为特殊分隔符。如果缺少*,Python解释器将无法识别位置参数和命名关键字参数
def person(name, age, city, job):
# 缺少 *,city和job被视为位置参数
pass
6.参数组合:顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
递归函数:调用自己
fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
递归调用栈溢出的解决方法:通过尾递归优化(在函数返回的时候,调用自身本身,并且,return语句不能包含表达式)
def fact(n):
return fact_iter(n, 1)
def fact_iter(num, product):
if num == 1:
return product
return fact_iter(num - 1, num * product)
num - 1和num * product在函数调用前就会被计算
python函数做n_【python】定义函数、参数、递归(n!)相关推荐
- python函数做n_简单Python函数的O(N)时间复杂性
我刚做了一个Codibility演示测试.question and my answer can be seen here,但我也会把我的答案贴在这里.我的回答是:def solution(A): # ...
- 人人都能学会的python编程教程11:定义函数
定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们以自定义一个求绝对值的my_ ...
- Python骚操作:动态定义函数
在 Python 中,没有可以在运行时简化函数定义的语法糖.然而,这并不意味着它就不可能,或者是难以实现. from types import FunctionTypefoo_code = compi ...
- python 定义函数方法_Python动态定义函数的方法介绍
本篇文章给大家带来的内容是关于Python动态定义函数的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 基于 MIT 许可协议 在 Python 中,没有可以在运行时简化函数 ...
- 在python中使用关键字define定义函数_python自定义函数def的应用详解
这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...
- python定义函数需要保留字def_定义函数时要用到哪一个python保留字?_学小易找答案...
[简答题]常见的足部畸形有哪些?例举6种以上. [其它]请将会计学小册子第四章完成情况(选择+判断+业务题2. 6.)的所有内容拍照上传嗷 [其它]以小组为单位进行现场调研,对足球场外的广场区域植物造 ...
- python类的方法中定义函数
代码: class A():def run(self):def p():print('hello')p()a = A() a.run() 输出: hello 注意类中方法和普通函数的区别,python ...
- python求和函数1到100_Python定义函数实现累计求和操作
一.使用三种方法实现0-n累加求和 定义函数分别使用while循环.for循环.递归函数实现对0-n的累加求和 1.使用while循环 定义一个累加求和函数sum1(n),函数代码如下: 2.使用 f ...
- python中调用函数时必须有实参_Python之函数(一)定义函数以及传参
定义函数以及传参 函数的定义 def 函数名(): 函数体 例子: def func():#def关键字--定义 func函数名--和变量定义规则一样 ()必须要写格式 :声明 语句结束 s=[1,2 ...
最新文章
- CVPR 2017 全部及部分论文解读集锦
- linux用户和组帐户管理
- Android安全系列工具
- 实验报告一:词法分析
- 仅完成部分的readprocessmemory或write_王者荣耀:三种李小龙获取方式!无需完成任务、28号即可兑换...
- javascript实例自学手册光盘源码_零基础,自学编程,如何选择语言?
- Cmake构建_指定gcc/g++版本
- 独家干货|基于大数据的人体组织微结构的解析与构建
- 【武汉加油!中国加油!】挑战七天 实现机器视觉检测有没有戴口罩系统——第四五六七天
- python语法错误检查_如何检查python的语法正确性
- xp系统不能搭建信息服务器地址,XP系统出现“automation 服务器不能创建对象”提示怎么办...
- 自动化装配流水线转载运输机,3D图纸。图纸stp格式1g大小零件齐全
- c#加粗代码_C# 字体加粗按钮
- 《流浪地球》海报丨见证小破球24亿票房逆袭之路
- python ssl module_Python升级后ssl模块不可用问题解决和浅析
- SpringBoot使用Workbook读取excel中内容
- 谷粒商城 集群篇 (六) --------- MySQL 集群
- xAd:南京大学大二学生开发的视频内广告动态植入技术
- 搭建 discus 论坛
- 技术文章系列整理(持续更新)
热门文章
- PyCharm双击或默认情况下是插入的输入状态解决方法
- WORD开发工具的控件功能?
- java apache commons_使用java apache commons下载文件?
- 如何快速python入手_初学者怎么才能快速学会Python?
- 关于计算机维护的相关试题,比较好写的计算机系统维护论文选题 计算机系统维护论文题目哪个好...
- android.os.log,android.os.Handler和java.util.logging.Handler之间的区别?
- linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...
- linux下 java 文本_Java中如何将输入的信息写入文本中
- linux成功mysql数据直接拷贝_mysql数据库数据从一个linux系统移植到另一个linux系统的方法...
- a1在c语言里代指什么意思,A1考试宝典