美文网首页
函数的定义及参数详解

函数的定义及参数详解

作者: tenro | 来源:发表于2018-09-03 09:56 被阅读0次

如何去定义一个函数:

def condition(age):
    if age>18:
       print("do what you want it")
    elif age<18 and age>6:
       print("do something what your parents want it")
    else:
       print("drink milk in a cradle")

condition(3)

位置参数:(不传就报错)

def power(x)      # x就是位置参数

带默认参数的函数:(位置参数必传,默认参数不传取默认值)

def enroll(name, gentle, age=7, city="北京"):
    print('name:', name)
    print('gender:', gender)
    print('age:', age)
    print('city:', city)

enroll('Tenro', "带把的")
enroll('Tenro', "带把的", 8)
enroll('Tenro', "带把的", city="湖南")

可变参数的函数:(可传可不传)

#通过传入可变参数去求传入参数的平方和
def enroll(*numbers):
      sum = 0
      for x in numbers
          sum = sun + x * x
      print(sum)

enroll(1, 3, 5, 7)

#定义函数参数为*,当传入的是列表或者元祖时候,调用的时候也同样带上*
enroll(*[1, 3, 5, 7])  
enroll(*(1, 3, 5, 7))

关键字参数 **kw(位置参数必传,关键字参数可传可不传)

def person(name, age, **kw):
      print("name:", name, "age:", age, 'other:', kw)

person('tenro', 28) #双星号代码非必选参数
person('tenro', 28, city = "beijing") #可以自定义内容
person('tenro', 28, city = "beijing", job = "engineer") #支持多组定义内容

extra = {'city': 'shanghai', 'job': 'manager'}
person('tangsen', 32, city = extra['city'], job = extra['job'])
person('tangsen', 32, **extra)

命名关键字参数(位置参数必传,命名关键字参数必须用*分割,除非有可变参数在中间)

和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数)
def person(name, age, *, city, job):
    print(name, age, city, job)

person('tenro', 28, city='Beijing', job='Engineer')

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:
def person(name, age, *args, city, job):
    print(name, age, args, city, job

person('tenro', 28, (12, 34), city='Beijing', job='Engineer')

递归函数及优化

#递归函数(数值过大会导致栈的溢出)
def fact(n):
  if n == 1:
    return 1
  return n * fact(n - 1)

print(fact(5))
print(fact(1))
print(fact(100))

#优化递归函数(每一次的返回会释放一次栈内存)
def fact(num):
  return superFact(num, 1)
def superFact(num, product):
  if num == 1:
    return product
  return superFact(num-1, product*num)

相关文章

  • 函数的定义及参数详解

    如何去定义一个函数: 位置参数:(不传就报错) 带默认参数的函数:(位置参数必传,默认参数不传取默认值) 可变参数...

  • JavaScript之函数

    三、函数 目录:函数的定义和参数获取、变量的作用域 let const详解、方法的定义和参数的获取 1.函数的定义...

  • python基础-07-函数

    python基础-函数 1.函数的定义 例子: 2.python中函数的参数详解 必备参数demo: 默认参数de...

  • Python函数定义及参数详解

    函数定义 首先我们来创建一个函数,输出指定范围内的斐波拉契数列(Fibonacci series)。 输出结果如下...

  • Python快速精通4 - 函数的参数详解

    2,函数的参数详解 2.1 参数用法1: 调用函数时,按照形参位置输入参数 定义函数的时候,会在参数列表里面指定形...

  • Kotlin学习

    kotlin基础 kotlin入口及函数定义 函数定义使用关键字 fun,参数格式为:参数 : 类型 表达式作为函...

  • Dart语法(下)

    前文链接: Dart简介 Dart语法(上) 内容: 函数(方法)函数定义及各类函数;函数参数;闭包 面向对象定义...

  • Swift学习之函数类型

    基本的函数定义及调用 带有函数类型的参数的函数定义及调用 示例一 示例二 示例三 示例四 我们把文首的定义的那个简...

  • 【图像处理】OpenCV系列三十二 --- polylines、

    一、polylines()函数详解 1、函数原型 2、函数功能绘制几条多边形曲线; 3、参数详解 第一个参数,In...

  • iOS开发 - 「Swift 学习」Swift 函数(函数类型定

    Swift 函数类型及使用 函数都有特定的函数类型,由函数的参数类型及返回类型组成 函数定义 使用关键字 func...

网友评论

      本文标题:函数的定义及参数详解

      本文链接:https://www.haomeiwen.com/subject/cnhhwftx.html