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. 强烈建议收藏,python库大全

    Python常用库大全及简要说明 本文为大家罗列了Python开发的常用库和各个库的简要说明以及Python开发工具,包管理,环境管理等其它常用资源和Python学习资料.本文只罗列了一部分,完整内容 ...

  2. STM32CubeMX教程18 DAC - DMA输出自定义波形

    1.准备材料 开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm ...

  3. h5响应式方案设计

  4. Go-包-package-modules-import

  5. Go-环形链表

    package main import "fmt" // 环形单向链表 // 特征: 首尾相连 // 实现: 结构体 + 指针 // 1. 构建环形单向链表,类似单向链表,不过he ...

  6. [转帖]Unicode与utf的前世今生

    https://www.cnblogs.com/naodong/p/12742987.html 历史上存在两个独立的尝试创立单一字符集的组织,即 国际标准化组织(ISO)于1984年创建的通用字符集( ...

  7. [转帖]Linux之pure-ftpd安装和使用

    一.pure-ftpd简介   PureFTPd是一款专注于程序健壮和软件安全的免费FTP服务器软件(基于BSD License),以安全和配置简单为设计目标,支持虚拟主机,IPV6,PAM等功能.. ...

  8. [转帖]Jmeter学习笔记(二十一)——Concurrency Thread Group阶梯式加压测试

    https://www.cnblogs.com/pachongshangdexuebi/p/11739064.html 一.先安装jmeter的插件管理工具 1.下载地址:jmeter-plugins ...

  9. [转帖]Linux—vi/vim全局替换

    https://www.jianshu.com/p/4daa5dbc7dd5 vim全局替换   在linux系统中编辑文件或者配置时,常常会用到全局替换功能. 语法格式 :%s/oldWords/n ...

  10. [转帖]配置logback上报日志到Skywalking

    https://zhuanlan.zhihu.com/p/506119895 配置logback上报日志到Skywalking 配置logback上报日志到skywalking需要引入toolkit依 ...