IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python从入门到实践(七)函数 -> 正文阅读

[Python知识库]Python从入门到实践(七)函数

? ? 上篇总结了python如何处理用户输入以及while循环,本篇总结Python的函数。什么是函数?函数就是用来执行某个任务的代码块,这个跟Java一样,没啥特殊的。其实此前我们已经使用过很多的函数,那都是python自带的,例如sort、del等等。

目录

一、定义函数

1、无参函数

2、有参函数

3、实参和形参

二、传递实参

1、位置实参

2、?关键字实参

3、默认值

?三、返回值?

1、简单返回值

?2、可选实参

?四、传递列表

?1、函数中修改列表

?2、禁止函数修改列表

五、传递任意数量的实参

1、结合使用位置实参和任意数量实参

2、使用任意数量的关键字实参

六、将函数存储在模块中?

1、导入模块

(1)创建模块

(2)导入模块

2、?导入特定函数

3、使用as给函数指定别名

4、使用as给模块指定别名

5、导入模块中的所有函数


一、定义函数

1、无参函数

? ? python使用关键字def来定义一个函数,例如我们定义一个无参的函数hello(),其任务用来输出Hello:

def hello():
    print("Hello")


hello()

2、有参函数

? ? 上面的函数不带参数,这次我们实现一个带参数的函数,例如我们想要对某个人说hello,那么我们需要知道名字:

def hello(name):
    print("Hello, " + name)


hello("Tom")

3、实参和形参

? ? 上面的例子中,方法里的参数name是形参,用来描述函数需要的参数。而后面调用方法传入的"Tom"是实参,也就是调用函数时实际传递给函数的参数。

二、传递实参

? ? 鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参 的方式很多。

1、位置实参

? ? 位置实参,这要求实参的顺序与形参的顺序相同。例如,我想通过一个方法输出人的名字和年龄:

def show_name_and_age(name, age):
    print("Your name is " + name)
    print("You are " + str(age) + " years old")


show_name_and_age("Tom", 18)

? ? ?位置实参的顺序很重要,如果顺序反了,则达不到我们想要的结果,甚至导致非常严重的问题。

2、?关键字实参

? ? 关键字实参是传递给函数的名称—值对。你直接在实参中将名称和值关联起来了,因此向函 数传递实参时不会混淆:

def show_name_and_age(name, age):
    print("Your name is " + name)
    print("You are " + str(age) + " years old")


show_name_and_age(name="Tom", age=18)

3、默认值

? ??编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,Python将使用 指定的实参值;否则,将使用形参的默认值。

def show_name_and_age(name="Sam", age="19"):
    print("Your name is " + name)
    print("You are " + str(age) + " years old")


show_name_and_age(name="Tom", age=18)
show_name_and_age()

? ? 注意:只有指定了默认值的形参,在函数调用时,才可使用默认值。如果形参未指定默认值,则调用函数时,必须输入实参,否则报错。?

def show_name_and_age(name, age="19"):
    print("Your name is " + name)
    print("You are " + str(age) + " years old")


show_name_and_age(name="Tom", age=18)
show_name_and_age()

三、返回值?

? ? 函数并非总是直接显示输出,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值。

1、简单返回值

? ? 例如,我们使用字典统计一个人的信息:

def process_person_info(name, age):
    info = {"name": name, "age": age}
    return info


print(process_person_info("Tom", "19"))

?2、可选实参

? ? 还是接着上面的例子,我们统计的信息多一些,多一个信息country。不传country的情况下我们默认为China:

def process_person_info(name, age, country="China"):
    info = {"name": name, "age": age, "country": country}
    return info


print(process_person_info("Tom", "19"))
print(process_person_info("Bob", "18", "America"))

?四、传递列表

? ? 向函数传递列表很有用,这种列表包含的可能是名字、数字或更复杂的对 象(如字典)。将列表传递给函数后,函数就能直接访问其内容。

def hello(people):
    for person in people:
        print("Hello, " + person)


hello(["Tom", "Bob"])

?1、函数中修改列表

? ? 假设一个果盘有三个不同的水果,我们想把这个水果移到另外一个果盘,并且在移动完成后,输出每个果盘的信息:

def move(fruits1, fruits2):
    while fruits1:
        fruit = fruits1.pop()
        fruits2.append(fruit)


fruits11 = ["Apple", "Peach", "Pair"]
fruits22 = []
move(fruits11, fruits22)
print(fruits11)
print(fruits22)

?2、禁止函数修改列表

? ??假设一个果盘有三个不同的水果,我们想在另外一个果盘也放入一样的三种水哥,并且在放置完成后,输出每个果盘的信息:

def copy(fruits3, fruits4):
    while fruits3:
        fruit = fruits3.pop()
        fruits4.append(fruit)


fruits33 = ["Apple", "Peach", "Pair"]
fruits44 = []
copy(fruits33[:], fruits44)
print(fruits33)
print(fruits44)

? ? 切片表示法[:]创建列表的副本。这样函数所做的任何修改都只影响副本,而丝毫不影响原件。

五、传递任意数量的实参

? ? 有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任 意数量的实参。

? ? 例如,统计个人信息,有的人可能不愿意透露自己的年龄或国籍:

def process_person_info(*item):
    print(item)


process_person_info("Tom", 19, "China")
process_person_info("Sam")
process_person_info("Amy", "America")

1、结合使用位置实参和任意数量实参

? ? 如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最 后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。

def process_person_info(name, *item):
    print(name + str(item))


process_person_info("Tom", 19, "China")
process_person_info("Sam", 18)
process_person_info("Amy", "America")

2、使用任意数量的关键字实参

? ? 有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种 情况下,可将函数编写成能够接受任意数量的键—值对——调用语句提供了多少就接受多少。

def process_person_info(name, **item):
    print(name + str(item))


process_person_info("Tom", age=19, country="China")
process_person_info("Sam", age=18)
process_person_info("Amy", country="America")

六、将函数存储在模块中?

? ? 我们还可以将函数存储在被称为模块的独立文件中,再将模块使用import语句导入到主程序中。

1、导入模块

? ? 要让函数是可导入的,得先创建模块。模块是扩展名为.py的文件,包含要导入到程序中的 代码。

(1)创建模块

? ? 创建模块show_info.py,并且实现两个方法,分别为show_info和hello:

(2)导入模块

? ? 使用import导入模块,并且调用两个方法:

?运行,看下结果:

2、?导入特定函数

? ? 我们还可以导入模块中的特定函数,多个函数使用逗号,分开,这样调用函数时不需要再指定模块名了:

3、使用as给函数指定别名

? ? 导入模块的函数可能跟当前模块的函数名相同,我们可以使用as重新命名:

from show_info import hello as hl


def hello(name):
    print("Hello, " + name + "!")


hl("SB")
hello("SB")

? ? ?注意:重名不重新命名的情况下,则默认调用该模块的方法。所以,切记相同名字时重新命名。

4、使用as给模块指定别名

? ? 如果引入的模块名太长,为了美观,我们可以使用as对模块重新命名:

import show_info as s

s.show_info("SB", 18)
s.hello("SB")

5、导入模块中的所有函数

? ? 使用星号(*)运算符可让Python导入模块中的所有函数:

from show_info import *

show_info("aaa", 18)
hello("aaa")

? ? 本篇总结了Python中函数的使用。包括:函数的定义,函数的传参(位置参数,关键字参数,默认值),函数的返回值(简单返回值),可选实参(任意数量的实参、任意数量的关键字实参),以及将方法存储在模块中并导入到其他模块使用。本篇的内容非常多且非常关键,这是编写复杂项目的基础。下篇将总结另一个非常关键的内容-类。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:10:10  更:2022-09-13 11:13:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:25:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码