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

1.简介

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

2.函数的定义和调用

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

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

输出为:

>>>
你好我是王尼玛
def squareSum(a,b):<span style="white-space:pre">					</span>#带形参的函数定义(a,b即为形参)
    c = a**2 + b**2                                     #a**2表示a的平方
    return c<span style="white-space:pre">						</span>#将c的值返回,与java不同的是,<span style="color:#ff6666;">Python可以返回多个值,且以元组的形式返回</span><pre name="code" class="python" style="color: rgb(255, 102, 102);">

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("你好我是王尼玛")<span style="white-space:pre">				</span>
sayHi()

print(sayHi.__doc__)                          #函数名后不需要括号,doc两边的是双下划线
help(sayHi)                                   #<span style="color:#ff0000;">内置的help函数其实就是读取的doc</span>

输出

你好我是王尼玛
 这个函数的作用是王尼玛勾搭妹子问候语
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

小提示:

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

对于基本数据类型的变量,变量传递给函数后,函数会在内存中复制一个新的变量,从而不影响原来的变量。(我们称此为值传递)

但是对于列表来说,列表传递给函数的是一个指针,指针指向序列在内存中的位置,在函数中对表的操作将在原有内存中进行,从而影响原有变量。 (我们称此为指针传递)

b = [1,2,3]

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

print ("函数返回值为",changeList(b))
print (<span style="font-family: Arial, Helvetica, sans-serif;">"b的值为",</span><span style="font-family: Arial, Helvetica, sans-serif;">b)</span>

输出结果:

函数返回值为 [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.带有默认值的形参

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

时间: 2024-08-29 15:22:50

Python菜鸟学习手册06----函数的相关文章

Python菜鸟学习手册12----循环对象

什么是循环对象 循环对象是这样一个对象,它包含有一个next()方法(__next__()方法,在python 3x中), 这个方法的目的是进行到下一个结果,而在结束一系列结果之后,举出StopIteration错误. 当一个循环结构(比如for)调用循环对象时,它就会每次循环的时候调用next()方法,直到StopIteration出现,for循环接收到,就知道循环已经结束,停止调用next(). 假设我们有一个test.txt的文件: 1234 abcd efg 我们运行一下python命令

Python菜鸟学习手册11----异常处理

介绍 在项目开发中,异常处理是不可或缺的.异常处理帮助人们debug,通过更加丰富的信息,让人们更容易找到bug的所在.异常处理还可以提高程序的容错性. >>> 1/0 Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> 1/0 ZeroDivisionError: division by zero 上例中输入一除以零触发ZeroDivisionE

Python菜鸟学习手册10----文件的输入与输出

文本文件的读写主要通过open()所构建的文件对象来实现. 基本格式 f = open(文件名,模式) 最常用的模式有: "r"       # 只读 "w"     # 写入                                                               ---->如果文件中已经有内容,会把内容抹掉,如果不存在该文件,会新建文件 "a"      #追加模式                  

Python菜鸟学习手册15----多线程

线程与进程 程序相当于工厂,进程相当于车间,线程相当于工人.在一个工厂中往往有多个车间,在一个车间上有多个工人并行工作. 同车间上的工人共享房间,但是有些房间一次只能容纳一个人,比如厕所.在厕所里有人的时候,其他人不能进入.一个防止他人进入的简单方法,就是门口加一把锁.先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去.这就叫"互斥锁"(Mutual exclusion,缩写 Mutex). 还有些房间,可以同时容纳n个人,如果人数大于n,多出来的人只能在外面等着.这时的解

Python菜鸟学习手册05----控制流

在到目前为止我们所见到的程序中,总是有一系列的语句,Python忠实地按照它们的顺序执行它们.如果你想要改变语句流的执行顺序,该怎么办呢?例如,你想要让程序做一些决定,根据不同的情况做不同的事情,例如根据时间打印"早上好"或者"晚上好". 类似java语言,Python中有三种控制结构--三种控制流语句--if.for和while. 1.if if主要用于条件判断. 1.1 if结构 i = 1 x = 1 if i > 0: #注意后面的冒号必不可少! x

PostgreSQL学习手册(五) 函数和操作符

PostgreSQL学习手册(五) 函数和操作符 一.逻辑操作符:    常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符:    下面是PostgreSQL中提供的比较操作符列表: 操作符 描述 < 小于 > 大于 <= 小于或等于 >= 大于或等于 = 等于 != 不等于 比较操作符可以用于所有可以比较的数据类型.所有比较操作符都是双目操作符,且返回boolean类型.除了比较操作符以外,我们还可以使用BETWEEN语句,如

Python快速学习09: 函数的参数

前言 系列文章:[传送门] 继续干起来!! 正文 我们已经接触过函数,函数是可以被引用的(访问或者以其他变量作为其别名),也作为参数传入函数,以及作为列表和字典等等容器对象的元素(function)的参数(arguments)传递. 传递函数 形式参数       位置参数 默认参数 关键字变量参数 位置传递 例子: def f(a,b,c): return a+b+c print(f(1,2,3)) #在调用f时,1,2,3根据位置分别传递给了a,b,c. 形式参数 关键字传递 用位置传递会感

python入门学习:7.函数

python入门学习:7.函数 关键点:函数 7.1 定义函数7.2 传递实参7.3 返回值7.4 传递列表7.5 传递任意数量的实参7.6 将函数存储在模块中 7.1 定义函数 ??使用关键字def告诉python要定义一个函数,紧接着跟着函数名,冒号.后面的缩进构成函数体.例如: 1def func_name():2    函数体34def greet_user():5    """显示简单问候语"""6    print("hel

Python新手学习基础之函数-概念与定义

什么是函数? 函数是可以实现一些特定功能的方法或是程序,简单的理解下函数的概念,就是你编写了一些语句,为了方便使用,把这些语句组合在一起,给它起一个名字,即函数名.使用的时候只要调用这个名字,就可以实现语句组里的功能了.Python中自带的一些函数就叫做内建函数,不需要我们自己编写.还有一种是第三方函数,就是其它程序员编好的一些函数,共享给大家使用.前面说的这两种函数都是拿来就可以直接使用的.当然还有一种,就是我们自己编写的为了方便使用的函数,就叫做自定义函数了. 定义一个函数 Python使用