python基本语法-函数

函数

有时候,我们还要给 一件事情,一串动作起名字,指代 某个流程。
定义一个名字 对应多个语句操作, 称之为定义函数

所以:定义函数 就好像是给 一段代码 起了个名字

Python中,我们是这样定义函数的:

def interview():
    print("把求职者带到3号会议室")
    print("请求职者 完成答卷")
    print("让测试经理来面试 求职者")
    print("让技术总监面试 求职者")

def 是关键字 表示定义一个函数

后面是函数的名字,紧接着后面需要一个括号 ,这个括号中间,根据需要还可以有 参数,这里我们先不讲它

最后是一个冒号,下面的缩进的代码表示这个函数名字代表的具体动作是什么,称之为函数体。

函数体的代码是需要缩进的。我们建议缩进四个空格。

这样定义好了以后,后面的代码要指代这个面试的流程,只需要写名字 interview 就行了。 比如:

print(interview)
<function interview at 0x05292468>

表示这个 interview 是 一个函数类型的对象。

特别要注意的是,解释器执行到 定义函数 的语句时,并不会执行函数体里面的代码。

要执行函数体里面的代码,必须 调用函数。

Python代码怎么调用函数呢?就是在 函数名后面加上括号。

比如,要执行 interview 这个名字代表的动作,就在后面加上括号 interview()

interview() 就叫 调用函数 interview ,有时也叫做 执行函数 interview。
执行函数 interview 的时候,会执行 interview 函数体里面的代码。
当解释器 执行到 这行调用函数的代码时,就会跑到 函数 interview 里面,去执行函数里面的语句。
函数必须先定义,后面才能调用。

调用后返回

注意,当解释器执行完被调用函数内部的代码后,还会 返回 到调用它的代码处,继续执行后面的代码。

内置函数

Python内置了很多函数,可以直接使用。

函数的参数

函数调用括号里面的内容 称之为函数的 参数。
有的函数要完成功能,需要告诉它一些信息。

比如print函数,如果你不告诉它要打印的内容是什么,它怎么能打印信息到屏幕上呢?

参数的作用 就是: 提供 函数完成功能 所必须的信息

有参数的函数像这样

def func(para1,para2):
    ...

函数的参数都是放在函数定义的括号里面的。

比如上面示例代码中的 para1,para2

参数其实也是一个变量,所以他们的命名规则和变量的命名规则一样。

参数可以没有,可以是一个,也可以是多个。参数之间用逗号隔开。

调用有参数的函数时,需要传入对应个数的参数。

是一个参数,就传入一个,两个就是传入两个

我们上面interview的例子里面,如果我们要加上显示出面试者的名字,就可以这样

def interview(interviewee):
    print("求职者是 " + interviewee)
    print("把求职者带到3号会议室")
    print("请求职者 完成答卷")
    print("让测试经理来面试 求职者")
    print("让技术总监面试 求职者")

interview('王小五')

函数的返回值

有的函数执行一个流程就完了,并不需要返回什么信息,比如 print 函数,就是打印一下参数字符串,就完成了它的任务。
但是有的函数,需要返回一个结果给调用者。
比如 计算两个数字平方和的函数,必须要返回一个结果,告诉调用代码,平方和的计算结果。
函数要返回结果,就必须要使用 return 关键字,后面加上返回的结果对象

def squarep(num1,num2):
    return num1**2 + num2**2

ret = squarep(1,2)
print(ret)

语句ret = squarep(1,2) 等号右边的 就是函数调用的表达式。
解释器在执行这条语句的时候,会执行squarep函数对应的代码,函数代码最后返回一个平方和的计算结果。
这个计算结果(是一个数字对象) 就被赋值给了变量 ret
所以接下来的语句print(ret),就可以打印出1 和 2 的平方和 计算结果 5
解释器执行代码的时候,一旦执行了函数中的 return 语句,就会立即从函数中返回到调用的地方,该函数下面还有代码,也不会再执行了。

def squarep(num1,num2):
    return num1**2 + num2**2
    print('这条语句在return后面,不会执行')

ret = squarep(1,2)
print(ret)

如果一个函数定义,里面并没有写return语句,像这样

def func1():
    print('你好')

print(func1())

那么该函数调用后会返回一个None对象。 None对象是Python内置的,表示没有数据内容的对象。

缺省值参数

假设,我们要实现一个函数,统计考试得分超过指定分数的人数。

def  overScoreStudents(studentScoreList, score):
    count = 0

    # 下面的代码用到了循环和判断,后面章节会学习到
    for ss in studentScoreList:
        if ss >= score:
            count += 1

    return count

在调用这个函数的时候,大部分时候 都是统计超过及格分数线60的人数。像这样

overScoreStudents(ssList,60)

所以,我们调用该函数的时候,第二个参数通常都是填写 60 。
这样显得就有些麻烦。这时候,可以在定义函数的时候,给它加上缺省值,像下面这样:

def  overScoreStudents(studentScoreList, score=60):
    ...

这样,在调用这个函数的时候,如果score参数还是传入60 就可以不用写了,像这样

overScoreStudents(ssList)

如果传入了其他的值,比如90,那么就会使用传入的值。

overScoreStudents(ssList, 90)

关键字参数

关键字参数,就是指调用函数的时候,传入的参数,使用关键字来表示。

def  overScoreStudents(studentScoreList, score=60):
    ...

overScoreStudents(ssList, score=90)

关键字参数,可以简化调用函数的代码。

命名关键字参数

关键字参数,可以简化调用函数的代码。

def  overScoreStudents(studentScoreList, score=60):
    ...

overScoreStudents(ssList, score=90)

关键字参数,可以简化调用函数的代码。

变量的有效范围

在Python中,变量的有效范围,指的是变量可以被访问的范围。

局部变量

def func(num1,num2):
    ret = num1 + num2
    return ret

func(1,2)
print(ret)

在函数func中,变量ret是局部变量。局部变量,只能在函数内部访问。
函数的参数变量 也是 局部变量。

局部变量有效范围只能是该函数内部。

因为 ret 是 func 函数内部的 局部变量 , 有效范围只能是 func函数内部, 不能在外部使用。

同样的,参数变量, 比如上面的 num1, num2 也是函数 内部的局部变量,这两个变量名也只能在 func函数内部使用。

全局变量

# 获取数字对应的汉字
upChars = '零壹贰叁肆伍陆柒捌玖'
def getZh(num):
    print('对应的汉字是:' + upChars[num])

getZh(5)

定义在所有函数外部的变量,称之为 全局变量 。

全局变量的有效范围是整个模块文件。

上面的例子中 upChars 就是一个 全局变量。

函数内部代码 可以访问 全局变量的。

范围覆盖

upChars = '零壹贰叁肆伍陆柒捌玖'
def getZh(num):
    upChars = '零一二三四五六七八九'
    print('对应的汉字是:' + upChars[num])

getZh(5)

在函数内部,如果 局部变量 和 全局变量同名,使用的是 局部变量。
如果在函数内部要对全局变量进行重新赋值,不能直接这样

upChars = '零壹贰叁肆伍陆柒捌玖'
def change():
    upChars = '零一二三四五六七八九'

change()
print(upChars)

应该这样做

upChars = '零壹贰叁肆伍陆柒捌玖'
def change():
    global upChars
    upChars = '零一二三四五六七八九'

change()
print(upChars)

通过 global upChars 这行声明,表示 upChars 这个名字对应的是全局变量 upChars

常用 内置函数

我们通常会把常用的代码放到函数里面,这样要使用这些代码 ,只需要调用那些函数就可以了。

Python的设计者 为我们总结了一些常用的函数,放到了Python解释器中,这些函数我们直接就可以使用。

前面我们学过的print 就是其中之一。

内置函数可以在Python的官方文档查看到

abs()   dict()  help()  min()   setattr()
all()   dir()   hex()   next()  slice()
any()   divmod()    id()    object()    sorted()
ascii() enumerate() input() oct()   staticmethod()
bin()   eval()  int()   open()  str()
bool()  exec()  isinstance()    ord()   sum()
bytearray() filter()    issubclass()    pow()   super()
bytes() float() iter()  print() tuple()
callable()  format()    len()   property()  type()
chr()   frozenset() list()  range() vars()
classmethod()   getattr()   locals()    repr()  zip()
compile()   globals()   map()   reversed()  __import__()
complex()   hasattr()   max()   round()  
delattr()   hash()  memoryview()    set()
Python函数是一种可重复使用的代码块,用于执行特定任务的功能。它由函数名、参数列表、冒号、缩进的代码块组成。 函数名是给函数命名的标识符,用于调用函数并执行其中的代码。参数列表是在函数定义时用来接收外部传入的值的变量。冒号用于表示函数定义的结尾。代码块是函数的主体,其中的代码会按照特定顺序执行。 函数定义的语法如下: ``` def 函数名(参数列表): 代码块 ``` 参数列表是函数定义时的输入,它可以包含零个或多个参数,并用逗号分隔。参数可以是必需参数、默认参数或可变参数。 函数调用的语法如下: ``` 函数名(参数列表) ``` 函数在调用时,会将传入的参数值赋给对应的形式参数,然后执行函数内部的代码。函数可以有返回值,通过return语句将结果返回给调用者。 函数的内部代码可以使用缩进来表示,通常使用4个空格或一个制表符来表示缩进。缩进的代码会在函数被调用时执行。 在函数内部,可以使用局部变量来存储临时值,并在需要时进行计算和修改。函数外部的变量被称为全局变量,可以在函数内访问和修改。 函数可以用来实现一些特定功能或算法,将复杂的问题分解为多个简单的子问题。函数的使用可以提高代码的重用性和可读性。 总结来说,Python函数是一种用于封装特定任务的可重复使用的代码块。它具有函数名、参数列表、冒号和缩进的代码块等基本语法结构。函数可以接收外部传入的参数,执行特定的功能,并返回结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-陈福城-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值