Python 函数的简易使用(二)

函数的初步使用(二)

作者:爱吃肉的小花生
首先声明:写这些只是方便做着自己记忆和理解,如果能帮助到大家那当然更好不过

一、函数编写指南

(1)用小写字母和下划线给函数指定名称,最好是见名知意的,方便自己观看
(2)定义函数过后,要给其一个言简意赅的注释,方便你我他
(3)形参中设置默认值时,“=”左右两边不要有空格,如color=red即可;调用关键字实参的时候也是如此,不用加不必要的空格。
(4)若形参数量过多,我们可以在输入函数名左括号后Enter一下再接两下Tab,可以与函数体区分开,也方便我们观看,但一般形参时少量的时候是不需要这样的。
(5)若程序中含有两个以上的函数时,在一个函数定义结束后空两行,以方便我们自己查阅。

二、传递列表

1、传递、修改列表中的元素

简易的传递列表和传递字典类似,在此处我们就不在赘述,下面我们讲一下如何结合函数修改列表中的元素。还是我们先举一个例子:未学的课程作为一个列表,已学的课程作为一个列表,最后将已学的课程罗列出来

def print_model(unstudy,completed):
    '''打印出未学的课程和已学完的课程'''
    while unstudy:
        complete = unstudy.pop()  
    ##我们将未学的课程一门一门的传给complete##
        print("在修的课程: " + complete.title())
        completed.append(complete)
   '''每一门已经学完的的就加到complete的列表中'''
    return completed, unstudy

def show_complete(completed):
    print("已修完的课程: ")
    for complete in completed:   
 '''这里我们遍历了complete列表'''
        print("\t\t\t"+complete)
unstudy = ['math','algebra','history','statistic']
completed = ['art','p.e','english']
print_model(unstudy[:],completed)
'''用unstudy[:] 就是unstudy的副本,这样就不会影响原本unstudy的元素'''
show_complete(completed)
print(unstudy)

在上述代码中我们发现,我们在调用时,实参选择了unstudy[ : ]因为很多时候我们需要给自己的列表备份一下,保留原有的值,如果直接调用unstudy的话,我们再打印的unstudy列表就变为空列表了
我们再举一个例子:原本一个列表是魔术师的名字,现在我们在每一个魔术师前面加“The great”字样

magicians = []
completed = ['james','kevin','frank','ben','lucy']
def make_great(magicians,completed):
    '''改变列表元素加the great'''
    while completed:
        magician = "The great "+completed.pop()
        magicians.append(magician)
    return magicians
def show_magicians(magicians):
    '''打印出得到的列表元素'''
    for magician in magicians:
        print(magician.title())
make_great(magicians,completed[:])
'''这里就是[:]一个副本,completed本身的元素并没有删除'''
show_magicians(magicians)
print(completed)
print(magicians)

修改列表的元素,我个人的方法主要就是先创建一个空列表,然后通过函数删除、添加得到的

三、传递任意数量的实参

1、任意数量的位置实参

很多时候,我们不确定有多少个实参,emmm就比如说我们去买三明治,我们的形参有尺寸和要添加的食材,尺寸好定,但食材就不好说了,就说我自己吧,啥都吃,那自然是能加多少加多少,但有些小姐姐可能就讲究些,比如她们有的不要生菜,好那我们不在废话,搬上代码哈~

def sandwich_sale(size,*ingredients):
    '''三明治的尺寸和添加食材'''
    print("You need "+size+" sandwich。 ")

sandwich_sale('Supper Big','rou','meat','milk')
'''这样的话后三个元素是储存到了一个元组里,所以输出结果会有个括号'''

def sandwich_sale(size,*ingredients):
    '''三明治的尺寸和添加食材'''
    print("You need "+size+" sandwich。 ")
    for ingredient in ingredients:
        print("You want to append : ")
        print("-"+ingredient)
sandwich_sale('Supper Big','rou','meat','milk')

附上结果:
You need Supper Big sandwich。
You need Supper Big sandwich。
You want to append :
-rou
You want to append :
-meat
You want to append :
-milk

第一段代码我们没有遍历存储后的元组,是默认为将“rou”,“meat”,“milk”添加到一个元组里了。如果直接与字符串一起打印的话我们还需一个工厂函数,否则不能和字符串一起打印。

2、任意数量的关键字实参

这种情况跟上面的位置实参类似,但也有细微的不同,这次我们用汽车来举例,厂商、种类等其他的因素

def car_informations(makers,types,**anyelses):
    '''两个星星表示键值对,一个星星元素'''
    car_information = {} 
  '''我们有时候会忘记先建立一个空字典'''
    car_information['makers'] = makers
    car_information['types'] = types
    for key ,value in anyelses.items():
        car_information[key] = value
    return car_information
car_information = car_informations('beijing','benchi',color='red',size='big')
print(car_information)
'''结果:{'makers': 'beijing', 'types': 'benchi', 'color': 'red', 'size': 'big'}'''

这里我们要注意,关键字的实参,我们要用**后接形参,这是与位置实参的一个不同、

四、将函数储存在模块中

1、导入整个模块

说实话,我在看这个的时候,一头雾水,试了半天,后来发现是自己想错了。首先我们要把除函数外的语句都删掉,然后保存这个文件,当然是以.py结尾的,然后我们在这个文件所在目录下新建一个py文件,emmm就比如我的函数文件是 爱吃肉的小花生.py 我们在引用时是这样子的
import 文件名
爱吃肉的小花生.函数名(…,…)

这里要注意文件名和函数名中间的那个句点是不能落下的哦!
这里我把除函数外的语句全部删除了,并保存为cars1的文件名
这就是在pycharm的引用时的样子

2、导入特定的函数(一个或多个)

from 文件名 import 函数名1,函数名2,… (注意逗号隔开
这样导入的话,我们就不需要句点,直接用函数名称就可以,对于前面cars的例子我们直接:
a = car_information(……)就可以了

3、用as给函数、模块重新命名

(1)import 文件名 as 文件的新名字
(2)from 文件名 import 函数名 as 函数的新名
(3)导入所有函数 格式如下:
from 文件名 import *
注意:如果不是自己写的大型模块尽量不要这样,有时会出现一些意想不到的结果,因为有些命名可能会冲突

函数的简易使用就这些啦,一般的函数定义和调用是可以驾驭了,当然还有很多值得挖掘的地方,继续加油!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值