首页 > 其他分享 >第八章 函数

第八章 函数

时间:2022-12-30 19:12:06浏览次数:41  
标签:name 第八章 列表 names print def 函数

8.7 函数编写指南

1、应给函数指定描述性名称,且只在其中使用小写字母和下划线、给模块命名时也应遵循上述约定 2、每个函数都应包含简要地阐述其功能的注释,该注释应紧跟在函数定义后面,并采用文档字符串格式 3、给形参指定默认值时,等号两边不要有空格,当然,调用的时候也应该注意 4、建议代码行的长度不要超过79字符,如果形参很多,导致函数定义的长度超过了79字符, 可在函数定义中输入左括号后按回车键,并在下一行按两次Tab键,从而将形参列表和只缩进一层的函数体区分开来 5、如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开 6、所有的import语句都应放在文件开头,唯一例外的情形是,在文件开头使用了注释来描述整个程序。  

 In [1]:

 def greet_user():
    """显示简单的问候语"""
    print("hello")
 In [2]:    greet_user()  hello In [3]:  def greet_user(username):
    print(f"hello{username}")
In [4]:
greet_user("一叶知秋")
hello一叶知秋
 8.4 传递列表  8.4.1 在函数中修改列表 In [6]:  # 传递列表
def greet_user(names):
    """向列表中的每一个用户都发出简单的问候"""
    for i in names:
        msg = "hello," + i.title() + "!"
        print(msg)
 In [7]:  usernames = ["han","joy","davin"]   In [8]:  greet_user(usernames)     hello,Han!   hello,Joy!   hello,Davin! In [9]:  
# 修改列表
def print_models(unprinted_designs, completed_models):
    """模拟打印每一个设计,直到没有未打印的设计为止,打印每个设计后,都将其移动到completed_models"""
    while unprinted_designs:
        current_model = unprinted_designs.pop()

        print("打印模型:"+ current_model)
        completed_models.append(current_model)
​def show_completed_models(completed_models):
    """显示打印好的所有模型"""
    print("这些模型已经打印:")
    for model in completed_models:
        print(model)
 In [10]:    unprinted_designs = ['iphone case','robot pendant','dodecahedron']
completed_models = []
In [11]:
print_models(unprinted_designs,completed_models)
打印模型:dodecahedron
打印模型:robot pendant
打印模型:iphone case
In [14]:
show_completed_models(completed_models)
print(unprinted_designs)
print(completed_models)
这些模型已经打印:
dodecahedron
robot pendant
iphone case
[]
['dodecahedron', 'robot pendant', 'iphone case']
In [28]:
# 函数传参 传入的列表会使得原先的列表发生改变 所以传递的是列表地址?
# 如果是一些其他类型的呢?
str_ = "str"
tuple_ = (1,2,1,1,1)
list_ = ['1','2']
dict_ = {1:"一",2:"二"}
set_ = {1,2,3,4}
int_ = 10
float_ = 1.1
def is_changed(variable):
    variable += (["哈哈哈"],)
    print(variable)  
In [29]:
is_changed(tuple_)
tuple_
(1, 2, 1, 1, 1, ['哈哈哈'])
Out[29]:
(1, 2, 1, 1, 1)
In [30]: In [32]:
a
['1', '2']
b
c
In [34]:
制作一款10英寸披萨,配料有:('土豆', '芝士', '沙拉酱')
In [40]: Out[40]:
{'firstname': '一叶',
 'lastname': '知秋',
 'loc': '博客园',
 'Email': '[email protected]'}
In [51]:
# 练习8-9 魔术师
"""
创建一个包含魔术师名字的列表,并将其传递给一个名为
show_magicians()的函数,这个函数打印列表中每个魔术师的名字。
"""
magician_names = ['a','b','h']
def show_magicians(names):
    for name in names:
        print(name)
show_magicians(magician_names)
   a
b
h
In [50]:
# 8-10 了不起的魔术师
"""在你为完成练习 8-9 而编写的程序中,编写一个名为
make_great()的函数,对魔术师列表进行修改,在每个魔术师的名字中都加
入字样“the Great”。调用函数 show_magicians(),确认魔术师列表确实
变了。
"""
# 已修改
def make_great(names):
    for index,name in enumerate(names):
        name = "the Great " + name
        names[index] = name
magician_names = ['a','b','h']
def show_magicians(names):
    make_great(names)
    for name in names:
        print(name)
show_magicians(magician_names)
     
the Great a
the Great b
the Great h
In [60]:
# 8-11 不变的魔术师:
"""
修改你为完成练习 8-10 而编写的程序,在调用函数
make_great()时,向它传递魔术师列表的副本。由于不想修改原始列表,请
返回修改后的列表,并将其存储到另一个列表中。分别使用这两个列表来调
用 show_magicians(),确认一个列表包含的是原来的魔术师名字,而另一个
列表包含的是添加了字样“the Great”的魔术师名字。
"""
# 已修改
magician_origin_names = ['a','b','h'] 
magician_current_names = []
def make_great(names):
    for index,name in enumerate(names):
        name = "the Great " + name
        names[index] = name
    return names
magician_current_names = make_great(magician_origin_names[:])
def show_magicians(names):
    for name in names:
        print(name)
show_magicians(magician_origin_names)
show_magicians(magician_current_names)
     
a
b
h
the Great a
the Great b
the Great h
In [61]:
# 当实参不止一个的时候,可以使用 * 号进行处理
# 例如:
def make_pizza(*toppings):
    for i in toppings:
        print(i)
In [62]:
make_pizza("a",['1','2'],"b","c")
a
['1', '2']
b
c
In [63]:
# 位置实参! 和 任意数量实参
# 形参名字*toppings中的*让Python创建了一个名为toppings的空元组,并将所有接受过来的值封装在这个元组里
# 让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后
def make_pizza(size,*toppings):
    print(f"制作一款{size}英寸披萨,配料有:{toppings}")
make_pizza(10,"土豆","芝士","沙拉酱")
 制作一款10英寸披萨,配料有:('土豆', '芝士', '沙拉酱') In [81]:
# 学习完 一个星号*,再学习 两个星号*的使用方法
def build_profile(first,last,**userInfo):
    print(userInfo)
    profile = {}
    profile["firstname"] = first
    profile["lastname"] = last
    for key,value in userInfo.items():
        profile[key] = value
    return profile
# build_profile("一叶","知秋",loc = "博客园",Email = "[email protected]")build_profile("一叶","知秋",loc = "博客园",Email = "[email protected]")
build_profile("一叶","知秋",Email = "[email protected]")
 
{'Email': '[email protected]'}
Out[81]:
{'firstname': '一叶', 'lastname': '知秋', 'Email': '[email protected]'}
 

8.6 将函数存储在模块中

 

8.6.1 导入整个模块

 

8.6.2 导入特定的函数

 

8.6.3 使用 as 给函数指定别名

 

8.6.4 使用 as 给模块指定别名

 

8.6.5 导入模块中的所有函数

 

8.7 函数编写指南

 

8.8 小结

 
     
['Monty', 'Python']

标签:name,第八章,列表,names,print,def,函数
From: https://www.cnblogs.com/IT-QiuYe/p/17015673.html

相关文章

  • Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内置函数总结、案例
    文章目录​​前言​​​​一、函数基础​​​​1.函数参数​​​​2.函数返回值​​​​3.函数嵌套​​​​二、homework作业​​​​三、变量​​​​1.局部变量​​​......
  • Python__18--函数的定义与创建
    1函数的定义执行特定任务以完成特定功能的一段代码特点:复用代码隐藏细节提高可维护性提高可读性便于调试2函数的创建def函数名([输入参数]):函数体return......
  • 仿函数——内建函数
    已经给我们封装好的一些仿函数,我们可以直接调用即可使用一共分为三类:①算术仿函数②关系仿函数③逻辑仿函数采用这些内建函数对象前,需要引入头文件#include<function......
  • 仿函数——谓词
    仿函数也可以称为函数对象,通常采用匿名来实现,通过下面两个例子(记得在主函数体内调用)去更好的了解仿函数内的一元谓词和二元谓词:一元谓词: 二元谓词:......
  • VTK_Learning_体绘制讨论_颜色传输函数
    1.颜色传输函数颜色传输函数与不透明度传输函数的使用类似,二者的不同之处在于颜色传输函数是将一个标量值映射为颜色值。这个颜色值可以是RGB值,也可以是HSV值。VTK颜色传输......
  • VTK_Learning_三维图像切片(二)———鼠标交互(回调函数、观察者-命令模式)
    学习三维图像切面的提取后,我们可以实现一个稍微复杂的程序——通过滑动鼠标来切换三维图像切片,这也是医学图像处理软件中一个很基本的功能。实现该功能难点是怎样在VTK中控......
  • C语言--函数2--递归1
    8、递归函数直接或间接调用函数本身“自己调用自己”解决一个问题时,解决思路化成与问题本身类似的问题的时候=>递归C语言能够解决的递归问题满足两个条件:a问......
  • 不同标记的C++函数的链接签名
    #pragmaonceextern"C"{intTestAdd(inta,intb);externintTestAdd3(inta,intb);__declspec(dllexport)intTestAdd4(inta,intb);_......
  • 读python代码-学到的python函数-2
    1.zip函数zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与......
  • 11个案例讲透 Python 函数参数
    今天给大家分享一下自己整理的一篇Python参数的内容,内容非常的干,全文通过案例的形式来理解知识点,自认为比网上80%的文章讲的都要明白,如果你是入门不久的python新手,相......