函数的定义和使用

本文围绕函数的定义和使用展开,介绍了使用函数的好处,如减少代码量、保持一致性和易维护等。还阐述了函数的三种参数类型,包括普通参数、默认参数和动态参数,以及全局变量和局部变量,同时讲解了递归函数和lambda匿名函数的特性与用法。

函数的定义和使用

def test(x): # x代表形参

  '''

  2*x+1

  :param x:整形数字

  :return:返回计算结果

  '''

  y = 2*x+1

  return y

p = test(3) # test()表示运行名为test函数,3代表实参,给x进行赋值

print(p)

函数的定义:

  • def:表示函数的关键字
  • 函数名:函数的名称,根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算
  • 参数:为函数执行完毕后,可以给调用者返回数据

一.为什么要用函数?

  1. 减少代码量
  2. 保持一致性
  3. 易维

二.函数的参数

函数有三种不同的参数

  • 普通参数

  ###########定义函数##########

# name 叫做函数func的形式参数,简称:形参

def func(name):

print name

# ######### 执行函数 #########

# 'wupeiqi' 叫做函数func的实际参数,简称:实参

func('wupeiqi')

  • 默认参数

def func(name, age = 18):

  print "%s:%s" %(name,age)

# 指定参数

func('wupeiqi', 19)

# 使用默认参数

func('alex')

 

 

注:默认参数需要放在参数列表最后

  • 动态参数 *args

def func(*args):

  print args

# 执行方式一

func(11,33,4,4454,5)

# 执行方式二

li = [11,2,2,3,3,4,54]

func(*li)

  • 动态参数 **kwargs

def func(**kwargs):

  print args

# 执行方式一

func(name='wupeiqi',age=18)

# 执行方式二

li = {'name':'wupeiqi', age:18, 'gender':'male'}

func(**li)

三.函数的变量

函数的变量可分为 全局变量和局部变量

全局变量(大写)

定义:没有缩进的变量

局部变量(小写)

定义:子程序下定义的变量

 

name = 'lhf' # 这里就指全局变量

 

def change_name():

  name = '帅了一比' # 这里就指局部变量

  print('change_name', name)

 

change_name()

print(name)

结果

change_name 帅了一比

lhf

global和nolocal

global声明是全局变量,nolocal指定上一级变量

未声明全局变量

x = 99

def func():

x = 88

func()

print(x) #输出99

声明全局变量

x = 99

def func()

  global x

  x = 88

func()

print(x) #输出88

未指定上一级变量

def func():  

  count = 1

  def foo():

    count = 12

  foo()

  print(count)

func() #输出1

指定上一级变量

def func():

  count = 1

  def foo():

    nonlocal count

    count = 12

  foo()

  print(count)

func() #输出12

四.递归函数

就是函数自己调用自己

特性:

  1.必须有一个明确的结束条件

  2.每次进入深一层递归时,问题规模都应有所减少

def calc(n):

  print(n)

  if int(n / 2) == 0:

    return n # 当上面的条件成立后一个真值,返回到函数

  res = calc(int(n / 2))

  print(n,res)

  return res # 返回res的值,要将真值一层一层传递回去

calc(10)

 

五.lamabda匿名函数

lambda用法,冒号之前的是入参,冒号之后的是表达式,返回的值,最简单的函数

 

print [(lambda x:x*x)(x)for x in range(11)]

#结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

print (lambda x:x*x)(3)

#结果:9

g=lambda x:x*x

print g(4)

#结果:16

 

转载于:https://www.cnblogs.com/yunlong-hao/p/10941340.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值