函数###

函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:

>>> 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!)相关推荐

  1. python函数做n_简单Python函数的O(N)时间复杂性

    我刚做了一个Codibility演示测试.question and my answer can be seen here,但我也会把我的答案贴在这里.我的回答是:def solution(A): # ...

  2. 人人都能学会的python编程教程11:定义函数

    定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们以自定义一个求绝对值的my_ ...

  3. Python骚操作:动态定义函数

    在 Python 中,没有可以在运行时简化函数定义的语法糖.然而,这并不意味着它就不可能,或者是难以实现. from types import FunctionTypefoo_code = compi ...

  4. python 定义函数方法_Python动态定义函数的方法介绍

    本篇文章给大家带来的内容是关于Python动态定义函数的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 基于 MIT 许可协议 在 Python 中,没有可以在运行时简化函数 ...

  5. 在python中使用关键字define定义函数_python自定义函数def的应用详解

    这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...

  6. python定义函数需要保留字def_定义函数时要用到哪一个python保留字?_学小易找答案...

    [简答题]常见的足部畸形有哪些?例举6种以上. [其它]请将会计学小册子第四章完成情况(选择+判断+业务题2. 6.)的所有内容拍照上传嗷 [其它]以小组为单位进行现场调研,对足球场外的广场区域植物造 ...

  7. python类的方法中定义函数

    代码: class A():def run(self):def p():print('hello')p()a = A() a.run() 输出: hello 注意类中方法和普通函数的区别,python ...

  8. python求和函数1到100_Python定义函数实现累计求和操作

    一.使用三种方法实现0-n累加求和 定义函数分别使用while循环.for循环.递归函数实现对0-n的累加求和 1.使用while循环 定义一个累加求和函数sum1(n),函数代码如下: 2.使用 f ...

  9. python中调用函数时必须有实参_Python之函数(一)定义函数以及传参

    定义函数以及传参 函数的定义 def 函数名(): 函数体 例子: def func():#def关键字--定义 func函数名--和变量定义规则一样 ()必须要写格式 :声明 语句结束 s=[1,2 ...

最新文章

  1. CVPR 2017 全部及部分论文解读集锦
  2. linux用户和组帐户管理
  3. Android安全系列工具
  4. 实验报告一:词法分析
  5. 仅完成部分的readprocessmemory或write_王者荣耀:三种李小龙获取方式!无需完成任务、28号即可兑换...
  6. javascript实例自学手册光盘源码_零基础,自学编程,如何选择语言?
  7. Cmake构建_指定gcc/g++版本
  8. 独家干货|基于大数据的人体组织微结构的解析与构建
  9. 【武汉加油!中国加油!】挑战七天 实现机器视觉检测有没有戴口罩系统——第四五六七天
  10. python语法错误检查_如何检查python的语法正确性
  11. xp系统不能搭建信息服务器地址,XP系统出现“automation 服务器不能创建对象”提示怎么办...
  12. 自动化装配流水线转载运输机,3D图纸。图纸stp格式1g大小零件齐全
  13. c#加粗代码_C# 字体加粗按钮
  14. 《流浪地球》海报丨见证小破球24亿票房逆袭之路
  15. python ssl module_Python升级后ssl模块不可用问题解决和浅析
  16. SpringBoot使用Workbook读取excel中内容
  17. 谷粒商城 集群篇 (六) --------- MySQL 集群
  18. xAd:南京大学大二学生开发的视频内广告动态植入技术
  19. 搭建 discus 论坛
  20. 技术文章系列整理(持续更新)

热门文章

  1. PyCharm双击或默认情况下是插入的输入状态解决方法
  2. WORD开发工具的控件功能?
  3. java apache commons_使用java apache commons下载文件?
  4. 如何快速python入手_初学者怎么才能快速学会Python?
  5. 关于计算机维护的相关试题,比较好写的计算机系统维护论文选题 计算机系统维护论文题目哪个好...
  6. android.os.log,android.os.Handler和java.util.logging.Handler之间的区别?
  7. linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...
  8. linux下 java 文本_Java中如何将输入的信息写入文本中
  9. linux成功mysql数据直接拷贝_mysql数据库数据从一个linux系统移植到另一个linux系统的方法...
  10. a1在c语言里代指什么意思,A1考试宝典