7.1 python 中函数的定义

  python 中函数使用 def 定义: def greet_user():

7.2 传参的传递

  普通实参的传毒,可以与 C++ 相同,即按顺序传递。

7.2.1 关键字实参 -- 无需考虑传参顺序

  关键字实参是传递给函数的名称—值对。关键字实参让你无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。

def describe_pet(animal_type, pet_name):
print(animal_type,pet_name)
# ... ... # 关键字实参传参,以下两行代码等效
describe_pet(animal_type='hamster', pet_name='harry')
describe_pet(pet_name='harry', animal_type='hamster')

7.2.2 默认值

  同 C++。注意:使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参,这也与 C++ 相同。

def describe_pet(pet_name, animal_type='dog'):
print(pet_name,animal_type) describe_pet('www')

7.2.3 让参数变成可选择的

  可给能选择是否输入的实参指定一个默认值——空字符串,并在不输入这个参数值时不使用这个实参。

  例如函数是要输入姓氏,中间名,名称三个参数,但是有的人不存在中间名,这时就需要参数可选。

# 可选择是否输入的参数给予空白的默认值
def get_formatted_name(first_name, last_name, middle_name=''):
if middle_name:
full_name = first_name + ' ' + middle_name + ' ' + last_name
else:
full_name = first_name + ' ' + last_name
return full_name.title() musician = get_formatted_name('jimi', 'hendrix')
print(musician) musician = get_formatted_name('john', 'hooker', 'lee')
print(musician)

7.3 在函数中修改列表

  将列表作为参数传递给函数后,函数就可以对其进行修改,而这种修改对于列表来说是永久性的。

def print_models(unprinted_designs, completed_models):
"""
模拟打印每个设计,直到没有未打印的设计为止
打印每个设计后,都将其移到列表completed_models中
"""
while unprinted_designs:
current_design = unprinted_designs.pop() # 模拟根据设计制作3D打印模型的过程
print("Printing model: " + current_design)
completed_models.append(current_design) def show_completed_models(completed_models):
"""显示打印好的所有模型"""
print("\nThe following models have been printed:")
for completed_model in completed_models:
print(completed_model) # 未打印的列表
unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']
# 打印完成的列表
completed_models = []
# 打印完成列表++,未打印列表--
print_models(unprinted_designs, completed_models)
# 输出打印完成的列表
show_completed_models(completed_models)

7.3.1 禁止函数修改列表

  要禁止函数修改列表,可以将列表的副本(列表[:])传给函数,这样即使修改也是修改的列表的副本,对列表本身没有影响。

function_name(list_name[:])    # 要将列表的副本传递给函数

7.4 传递任意数量的实参

  形参形式形如 *形参名,即可接收任意数量的实参。即创建了一个元组,而任意数量的实参封装到了这个元组中。

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

# pizzas 接收多个参数
def make_pizza(custom,*pizzas):
"""概述要制作的比萨"""
print(custom,"buy these pizza:")
for pizza in pizzas:
print("- " + pizza)
print("\n") make_pizza('张三','pepperoni')
make_pizza('李四','mushrooms', 'green peppers', 'extra cheese')

7.5 将函数存储在模块中

将一整个模块导入,以模块名.函数名的形式调用函数。

pizza.py:

def make_pizza(custom,*pizzas):
"""概述要制作的比萨"""
print(custom,"buy these pizza:")
for pizza in pizzas:
print("- " + pizza)
print("\n")

main.py:

import pizza

pizza.make_pizza('张三','pepperoni')
pizza.make_pizza('李四','mushrooms', 'green peppers', 'extra cheese')

7.5.1 导入特定模块的特定函数

pizza.py:

def make_pizza(custom,*pizzas):
"""概述要制作的比萨"""
print(custom,"buy these pizza:")
for pizza in pizzas:
print("- " + pizza)
print("\n")

main.py:

from pizza import make_pizza    # 来自 pizza 模块的导入

make_pizza('张三','pepperoni')
make_pizza('李四','mushrooms', 'green peppers', 'extra cheese')

7.5.2 使用 as 给函数指定别名/给模块指定别名

  如果要导入的函数的名称可能与程序中现有的名称冲突,或者函数的名称太长,可使用 as 指定别名。

from pizza import make_pizza as mp
mp(16, 'pepperoni')
mp(12, 'mushrooms', 'green peppers', 'extra cheese')

  我们还可以给模块指定别名。

import pizza as p
p.make_pizza(16, 'pepperoni')
p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

7.5.3 导入模块的全部函数

  from 模块名 import *

注意:最好不要采取这种方式,避免函数名相同带来不好的结果。  

7.函数的使用--《Python编程:从入门到实践》的更多相关文章

  1. Python编程从入门到实践笔记——函数

    Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...

  2. Python编程从入门到实践笔记——用户输入和while循环

    Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...

  3. Python编程-从入门到实践 Eric Matthes 著 袁国忠 译 - - 第二章 动手试一试

    因为第一章的动手试一试基本都是探索性的,所以直接进入第二章. # 2.2 动手试一试 # 2_1 简单消息: 将一条消息存储到变量中,再将其打印出来. message = 'python 编程从入门到 ...

  4. 《Python编程从入门到实践》_第十章_文件和异常

    读取整个文件 文件pi_digits.txt #文件pi_digits.txt 3.1415926535 8979323846 2643383279 下面的程序打开并读取整个文件,再将其内容显示到屏幕 ...

  5. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

  6. Python编程从入门到实践

    Python编程从入门到实践1 起步2 变量和简单数据类型3 列表简介4 操作列表5 if语句6 字典7 用户输入和while循环8 函数9 类10 文件和异常11 测试代码12 武装飞船13 外星人 ...

  7. 《python编程从入门到实践》2.3字符串

    书籍<python编程从入门到实践> 2.3字符串 知识模块 print()函数,函数名称突出为蓝色,输出括号内的变量或者字符创. 变量名的命名:尽量小写字母加下划线并且具有良好的描述性, ...

  8. 《python编程从入门到实践》读书实践笔记(二)

    本文是<python编程从入门到实践>读书实践笔记11章的内容,主要包含测试,为体现测试的重要性,独立成文. 11 测试代码 写在前面的话,以下是我这些年开发中和测试相关的血泪史. 对于一 ...

  9. 《python编程从入门到实践》读书实践笔记(一)

    本文是<python编程从入门到实践>读书实践笔记1~10章的内容,主要包含安装.基础类型.函数.类.文件读写及异常的内容. 1 起步 1.1 搭建环境 1.1.1 Python 版本选择 ...

  10. 初学《python编程从入门到实践》web应用程序,出现错误

    一开始是遇到了TemplateDoesNotExist的错误,上百度都是说改settings.py里面的TEMPLATE的DIRS, 但我改了还是出现问题, 我用的<python编程从入门到实践 ...

随机推荐

  1. 14、SpringBoot-easyexcel导出excle

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  2. Python异步编程原理篇之协程的IO

    协程的IO asyncio 作为实现异步编程的库,任务执行中遇到系统IO的时能够自动切换到其他任务.协程使用的IO模型是IO多路复用.在 asyncio 低阶API 一篇中提到过 "以Lin ...

  3. 【Gerrit】 快捷操作

    A:添加Reviewers V+B:Pachset刷到最新 D:Download patch J.K:文件移动选中 R:文件Reviewed状态修改 S:五星状态修改,可用于分类管理 U:返回上层 I ...

  4. 【C】C语言头文件互锁和包含问题

    [来源] https://mp.weixin.qq.com/s/4tPHkwEd5n-xHNHJHtCoBw

  5. [转帖]46岁加入谷歌,51岁发明Go,他的编程原则影响了一大批程序员!

    https://www.zhihu.com/tardis/zm/art/551945410?source_id=1005 今年3月,万众瞩目的Go 1.18版本发布,Go终于开始支持泛型了!该版本不仅 ...

  6. [转帖]一文读懂 HugePages(大内存页)的原理

    https://juejin.cn/post/6956541214426398757 在介绍 HugePages 之前,我们先来回顾一下 Linux 下 虚拟内存 与 物理内存 之间的关系. 物理内存 ...

  7. [转帖]Sysbench - 一种系统性能benchmark

    SysBench是一款开源的.跨平台的.模块化的.多线程的性能测试工具,通过高负载地运行在数据库上,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.用于评估操作系统的性能参数. 1 sysb ...

  8. Harbor 简要安装说明

    Harbor 简要安装说明 下载最新的离线安装文件 链接:https://pan.baidu.com/s/1ZEjgnI3YmhsdVOm7h7SWcQ 提取码:GSNB 复制这段内容后打开百度网盘手 ...

  9. Vue2 里如何优雅的清除一个定时器

    绝大多数人清除定时器的方法 <script> export default { data() { return { timer: null } }, mounted() { this.ti ...

  10. file文件转为base64

    场景描述 在工作中,我们经常需要进行文件上传. 比如在进行图片上传的时候, 我们需要将上传的图片展示出来. 这个时候我们就需要将file文件转化为base64. 将file文件转化为base64 // ...