《Python从入门到实践》学习笔记(第8章、函数)

第八章、函数

一、定义函数

#定义函数
def 函数名():
    函数体
#使用函数
函数名()

函数名命名的注意点:

  • 遵从变量命名的要点
    • 不能数字开头
    • 小驼峰命名发
1.实参和形参
def dong(name):
    print('我的名字是' + name)
   
dong('hehe')

**形参:**在上面的定义函数的代码中, 括号里的那个参数没有真实的含义,只是让大家知道,这里应该放一个参数。

**实参:**在上面使用函数的代码中,括号里面传入的字符串就是实参,这个参数被存放在形参name中。

2.位置实参

故名思意,传入实参的位置要与我们定义的形参的位置所对应,这个也是我们最常见的传参方式,再此不多做解释。

3.关键字实参

不考虑闯入参数时实参的顺序:我们在传入的时候,就对指定的形参指定具体的值,这样就不用顾及传入参数的顺序啦。

def dong(name, age, city):
    print('来自' + city '的' + name + '今年已经' + age '岁了')
   
#位置实参的方式传入参数,需要注意参数的位置
dong('张三', 13, '北京')

#关键字实参传入参数,不需要注意参数的位置,就算传入时位置与形参不同,也不影响输出结果
dong(age=13, city='上海', name='李四')
4.默认值

**作用:**我们在定义函数的时候可以给一些参数设置默认值,在后面调用函数的时候,我们如果没有给设定了默认值的参数赋值,那么这个参数的值就是默认值。

  • 默认值参数在定义时一般放在末尾,因为,我们一般使用的时位置实参
  • 设置了默认值的参数在调用时可以不给这个参数赋值
  • 没有设置默认值的参数,在调用时必须给相关的参数赋值,不然会报错

二、返回值

三、传递列表

1.在函数中修改列表

将列表传递给函数后,函数就可以对列表进行修改。

而且在函数中对这个列表所做的所有的操作都是永久的

**注意:**如果列表是全局变量,若它不以参数的形式传入函数,他是不能在函数里面修改的。

​ 若它以参数的形式传入函数,它是可以被修改的。

2.禁止函数修改列表

**方法:**将列表得副本传递给函数

function_name(list_name[:])
#使用函数名[:]切片的方式,就可以获得列表得副本

8——10

def show_magicians(name, greatname):
    while name:
        current_name = name.pop()
        a ='the ' + 'Great' + current_name
        print(a)
        greatname.append(a)

name_list = ['张三','李四','王五','赵六']
greatname = []
show_magicians(name_list[:],greatname)
print(name_list)
print(greatname)

四、传递任意数量的实参

**问题:**预先不知道要传入几个参数怎么办?

**解决:**使用*name,创建了一个名字叫做name的元组,所有收到的实参都会放在这个元组里面。

(无论传入多少个参数都可以)

def 函数名(*name):
1.混合使用参数

**要点:**把任意参数放在定义的形式参数的最后面,就像下面这样

def 函数名(can1, can2, can3, *name):
2.使用任意数量的关键字实参数

**问题:**在上面我们可以向函数中传入任意数量的参数,但是我们不知道,我们传入的这些参数具体代表是么意思,有什么用途,这怎么办?

解决:

  • 传入参数时,要求用户传入键值对,以用来对传入的参数进行解释。
  • **name:代表往函数中传入任意数量的键值对。
def build_profile(first, last, **user_info):
    #形参**user_info要求后面必须传入键值对 
    profile = {}
    profile['first_name'] = first
    profile['last_name'] = last
    for key, value in user_info.items():
        profile[key] = value
    return profile

user_profile = build_profile('albert', 'einstein',
                            location = 'princenton',
                            field = 'physics')
print(user_prfile000)

五、将函数存储在模块中

1.导入模块的三种方式
  • import 模块名
  • from 模块名 import *
    • 导入该模块中的所有函数
  • from 模块名 import 函数名
    • 导入该模块中的某个函数
2.使用as给模块和函数重命名
  • from 模块名 import 函数名 as 新的函数名

  • import 模块名 as 新的模块名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辛伯达岛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值