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

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'] = num
    for key, value in user.items():
        info[key] = value
    return 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值