Python菜鸟学习手册06----函数

本文详细介绍了Python中的函数,包括函数的定义与调用、带默认参数的函数、关键参数赋值、局部变量、全局变量的使用、lambda表达式、函数作为参数传递以及map()和filter()函数的应用。此外,还提供了关于Python函数的小贴士,如函数可以通过返回元组返回多个值,以及如何使用默认形参。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.简介 

        函数是重用的程序段。它们允许你给一块语句一个名称,然后你可以在你的程序的任何地方使用这个名称任意多次地运行这个语句块。这被称为调用函数。我们已经使用了许多内建的函数,比如input()和range()。

2.函数的定义和调用

       函数通过def关键字定义。def关键字后跟一个函数的标识符名称,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体。

def sayHi():                  #无参函数的定义,且没有返回值。函数将自动返回None。None是Python中的一个特别的数据类型,用来表示什么都没有,相当于C中的NULL。
    print("你好我是王尼玛")   #注意缩进
sayHi()                       #函数调用
输出为:

>>> 
你好我是王尼玛
def squareSum(a,b):            #带形参的函数定义(a,b即为形参)
    c = a**2 + b**2            #a**2表示a的平方
    return c                   #将c的值返回,与java不同的是,Python可以返回多个值,且以元组的形式返回
print(squareSum(3,2))          #函数调用,将数值3,2带入函数
 输出为:
13

2.1带默认形参的函数

我们可在定义形参的时候直接给参数加一个默认值。值得注意的是带有默认值的形参 要放在右边。比如“def say(message, times = 1):”是正确的而“def say(times=1,message):”是错误的!
def say(message, times = 1):
    print ((message+" ") * times)         #字符串可以通过+号连接

say('Hello')
say('World', 3)
输出结果
Hello 
World World World 

2.2关键参数赋值

再调用函数的时候,我们可以直接通过形参名给形参赋值
def func(a, b=2, c=3):
    print ("a、b、c的值分别为",a,b,c)    

func(1,3)
func(1, c=24)
func(c=50, a=100)
输出
a、b、c的值分别为 1 3 3
a、b、c的值分别为 1 2 24
a、b、c的值分别为 100 2 50

*2.3 文档字符串

在函数的第一个逻辑行的字符串是这个函数的 文档字符串 。注意,DocStrings也适用于模块和类(虽然还没学到那..... 委屈)。文档字符串主要用于给函数示意。
def sayHi():
    """ 这个函数的作用是王尼玛勾搭妹子问候语"""    #只能通过三引号的行出,用井号不行
    """本条语句也是不能作为函数字符串的!"""
    print("你好我是王尼玛")
sayHi()

print(sayHi.__doc__)                               #函数名后不需要括号,doc两边的是双下划线
help(sayHi)                                        #内置的help函数其实就是读取的doc
输出
你好我是王尼玛
 这个函数的作用是王尼玛勾搭妹子问候语
Help on function sayHi in module __main__:

sayHi()
    这个函数的作用是王尼玛勾搭妹子问候语


3.局部变量

        定义在函数内部的变量叫做局部变量,不管局部变量的值在函数内部如何变化,都 不会影响到函数外的同名变量。即变量名称对于函数来说是局部 的。这称为变量的作用域 。所有变量的作用域是它们被定义时所在的块。
a = 1

def changeNum(a):                               #整数变量传递给函数,函数对它进行操作,但原整数变量a不发生变化。
    a = a + 1
    return a

print ("函数返回值为",changeNum(a))
print ("a的值为",a)
输出结果:

函数返回值为 2
a的值为 1

4.使用global语句

如果你想要在函数外为一个 定义在函数内的变量赋值,那么你就得通过 global语句告诉Python这个变量名不是局部的,而是全局的。
def func():
    global x

    print ("函数中x的值为",x)
    x = 2
    return x

x = 50                                              #在函数外为一个定义在函数内的变量赋值
print ('x的值为', x)
print("函数返回值为",func())
输出结果
x的值为 50
函数中x的值为 50
函数返回值为 2

5.lambda函数

lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子:
def f(x):
    return x**2
print (f(4))

#Python中使用lambda的话,写成这样 
g = lambda x : x**2
print (g(4)) 
lambda生成一个函数对象。该函数参数为x,,返回值为x的平方。函数对象赋给g。g的调用与正常函数无异。

6.函数作为参数传递

函数可以作为一个对象,进行参数传递。函数名(比如func)即该对象。比如说:
def f(x):
    return x**2

def test(fx, a):                           #将函数作为参数传递
    print ('%d的平方为' % a,end="")
    print (fx(a))

test(f, 4)
上面的程序可以改写为
def test(fx, a):                           
    print ('%d的平方为' % a,end="")
    print (fx(a))

test(lambda x:x**2, 4)

7.map()函数

map函数的定义:
map(function, sequence[, sequence, ...]) -> list
通过定义可以看到,这个函数的第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一个集合。map()将每次从两个表中分别取出一个元素,带入lambda所定义的函数。
print(list(map(lambda x: x ** 2, (1, 2, 3, 4, 5))))
输出
[1, 4, 9, 16, 25]
print(list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])))
输出
[3, 7, 11, 15, 19]

8.filter()函数

filter函数的第一个参数也是一个函数对象。它也是将作为参数的函数对象作用于多个元素。 如果函数对象返回的是True,则该次的元素被储存于返回的表中。filter通过读入的函数来筛选数据。同样,在Python 3.X中,filter返回的不是表,而是循环对象。
def func(a):
    if a > 100:
        return True
    else:
        return False

print (list(filter(func,[10,56,101,500])))

小提示:

1.指针传递使函数可以改变函数外的值!

对于 基本数据类型的变量,变量传递给函数后,函数会在内存中复制一个新的变量,从而 不影响原来的变量。(我们称此为 值传递
但是对于 列表来说,列表传递给函数的是 一个指针,指针指向序列在内存中的位置,在函数中对表的操作将在原有内存中进行,从而 影响原有变量。 (我们称此为 指针传递
b = [1,2,3]

def changeList(b):                              #我们将一个表传递给函数,函数进行操作,原来的表b发生变化。
    b[0] = b[0] + 1
    return b

print ("函数返回值为",changeList(b))
print ("b的值为",b)

输出结果:

函数返回值为 [2, 2, 3]
b的值为 [2, 2, 3]

2.Python可以返回多个值,以元组的形式返回

def idSave():
    a=input("姓名为:")
    b=input("年龄为:")
    c=input("性别为:")
    return a,b,c

print(idSave())
输出结果:
姓名为:王尼玛
年龄为:12
性别为:女
('王尼玛', '12', '女')

3.带有默认值的形参

我们可在定义形参的时候直接给参数加一个默认值。值得注意的是带有默认值的形参 要放在右边

上一讲: Python菜鸟学习手册05----控制流



欢迎收听我的微信公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值