Python编程:从入门到实践 第三章—函数

语法

就还是需要先记一下函数定义的语法:

def Test(num):num = 12

如上,def func_name(factors): # codes,除了不用声明返回值类型,和定义前加了个def没啥了,也没有什么先声明再定义的操作吧。。

一些基本的函数内容和C没啥区别,比如 默认参数(同样也是必须放最后)、指定值传参(就可以忽略传参时候的顺序)等。。

书上对于 指定值传参也就是
func(参数名 = 值) ,这种传参方式有名词的:关键字实参

传参问题

关于这个函数的传参问题,感觉应该是和C#的值类型和引用类型相似

  1. 传入一些简单的数据类型,比如字符串,整型等,就是值传递,函数内部只会改变形参的值,对实参没影响。
  2. 但是对于列表和字典等复杂的数据类型,就改变实参的值了。

暂且先这样浅显的理解吧,深入的话刚搜了一篇文章:
Python传参的问题

传递任意数量的参数

分为两种

  1. 接收任意数量参数 like:
def make_meal(size, *toppings):print('The',str(size)+'-inch big pizza was made of:\n')for topping in toppings:print(topping)

   “这个 *toppings 中的*号是让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中”

  1. 接收任意数量的 关键字实参(见前边备注。。)
def get_multifac(num: int, **user):info = {}info['number'] = numfor key, value in user.items():info[key] = valuereturn info# 调用user_infor = get_multifac(3, mission='getup', class='Math')

   “这个 **users 中的**号是让Python创建一个名为users的空字典,并将收到的所有 键-值对 都封装到这个元组中”

第一次写这个调用的时候,发现 调用时候:
get_multifac(3, mission=‘getup’, course=‘Math’)
missioncourse总是报错,我一度以为我这个版本的python不支持这样调用呢。
搜了报错信息才发现:原来是之前函数体内的
for key, value in user 出错了, user既然是个字典,而且这个for循环是用了 key和value的,那应该是 user.items()啊,还是对遍历字典不够熟练导致的错误。。
我记得上一章书上有写 直接 for … in 字典名 是指的键,但这样写显然不如写为 for… in 字典名.keys() 更加明了。

由于这两种函数都是接收不确定数量的实参的,所以说 *factor**factor 都得放到形参列表的最后一个。

函数存储在模块中

模块也就是.py的代码文件了,然后在模块里写的函数,可以再其他代码中import
比如我现在创建了一个PizzaMake.py 文件,代码为:

def prepare_work():print("preparing")def make_pizza():print("making")def finish():print("finish!")

有几种方式

  1. 直接引用整个模块
    import PizzaMake
    这种引用方式,调用函数时需要加上模块名,也就是
    模块名.函数名的形式调用
  2. 引用模块中的某些函数
    from PizzaMake import prepare_work, make_pizza, finish
    这种就不用加模块名直接调用函数就可以
  3. 引用模块的所有函数
    form PizzaMake import *
    这种方式不推荐,因为把一个模块中的所有函数都import,却不知道具体的函数名,很容易与当前代码中的其他函数名冲突,从而引起覆盖。

无论是import 模块还是模块中的函数都可以重命名的:
import PizzaMake as p
from PizzaMake import make_pizza as mp, prepare_work as pw

Python编程:从入门到实践 第三章--函数相关推荐

  1. Python编程从入门到实践(第三、四章的列表和元祖)

    1.Python中列表用[]来表示,并用逗号分隔其中元素 2.访问列表元素,给出元素的索引值即可(索引从0开始) 3.修改,添加和删除元素 3.1修改时给出列表名和修改元素的索引,然后赋新值 3.2在 ...

  2. 读书笔记——《Python编程从入门到实践》第二章

    读书笔记--<Python编程从入门到实践>第二章 读书笔记--<Python编程从入门到实践>第二章 变量 如何使用变量 如何规范变量命名 字符串 字符串是什么 如何修改字符 ...

  3. Python编程从入门到实践第五章部分习题

    Python编程从入门到实践第五章部分习题 5-8 5-9` names = ['admin','zhang','li','zhao','song'] for name in names:if nam ...

  4. python编程 从入门到实践豆瓣-三周刷完《Python编程从入门到实践》的感受

    本文将以对话采访的形式展现 为什么会选择学习Python 语法简洁,实用,和golang部分类似,学习性价比高: 应用范围广,涉及后端,机器学习,图像处理,游戏等: 好奇这是一门怎样的语言 计划如何学 ...

  5. python编程从入门到实践 第18章Django入门 2022年最新

    说明:这篇文章只是记录自己自学本书的一个痕迹,日后来看作为一个念想.至于做为公开,是希望对一些同样跟我一样的朋友有一点点帮助,当然我本人就是小白,帮助可能也不大哈哈. 这篇文章记录了<pytho ...

  6. Python编程 从入门到实践——第1章 起步

    第一章 起步 1.1 搭建编程环境 1.1.1 Python版本 1.1.2 运行Python代码片段 1.1.3 Sublime Text简介 1.2 在不同操作系统中搭建Python编程环境 1. ...

  7. Python编程从入门到实践 -----第4章、操作列表(课后习题答案)

    4-1 比萨:想出至少三种你喜欢的比萨,将其名称储存在一个列表中,在使用循环将每种比萨名称都打印出来. 修改这个for循环,使其打印包含比萨名称的句子,而不是仅仅是比萨的名称,对于每种比萨,都显示一行 ...

  8. 《Python编程 从入门到实践》第八章 ——函数习题

    8-1       编写一个名为display_message()的函数,指出你在本章学的是什么.调用这个函数,确认显示的消息正确无误. def display_message():     '''本 ...

  9. Python编程从入门到实践 -----第3章、列表简介(课后习题答案)

    3-1 姓名: 将一些朋友的姓名存储在一个列表中,并将其命名为names .依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来. names = ['chen', 'x', 'l']print ...

最新文章

  1. 马斯克的脑机接口能如愿以偿吗?
  2. ASP .Net Core系统部署到SUSE 16 Linux Enterprise Server 12 SP2 64 具体方案
  3. Xcode_9_beta.xip 更新下载
  4. 国内三款主流海淘产品APP竞品分析
  5. ASP.NET下MVC设计模式的实现
  6. 处理目录的常用命令---Linux
  7. A Way to implement Abstract Class In Flex
  8. springdata学习笔记-01-helloworld-(暂时不全223)
  9. 扫描线三巨头 hdu1928hdu 1255 hdu 1542 [POJ 1151]
  10. netty源码分析系列——Channel
  11. 女生可不可以进入IT行业做Linux运维工程师?
  12. 2021-09-09二叉树的最大深度, 深度优先搜索
  13. micropython性能低下_MicroPython支持的开发板:高性能、低成本创客首选
  14. 花西子背后的那个男人和他的五篇笔记
  15. 蒙氏三段卡---马三段卡
  16. 软件测试判定表测试用例,黑盒测试用例设计方法之判定表法
  17. 阿里云ECS节省计划重磅发布 比包年包月灵活,比按量付费划算,最高节省76%费用
  18. iOS之Category和Extention的区别
  19. angular项目中使用Primeng
  20. JFreeChart饼状图显示数字

热门文章

  1. Compound原理
  2. GRU及双向RNN介绍
  3. 数字图像处理 -灰度变换 之 对数变换(Log Transformation)
  4. 2020中国高校计算机大赛·华为云大数据挑战赛-数据分析(一)
  5. 报告:Facebook的Calibra数字钱包将无法在其所有市场上销售
  6. 安卓手机的文件如何传到linux里去,如何在Linux下安装安卓文件传输助手
  7. 小程序一个简单的订单界面
  8. c语言平台答案,C语言平台答案.docx
  9. 【物联网那些事儿】18 大物联网操作系统,Raspbian Pi、Ubuntu Core、Windows 10 IoT、Micropython、OpenWrt ....你用过哪几个?
  10. 如何将Word中的数学公式转化成Latex格式