定义:函数是带名字的代码块,用于完成具体的工作

定义函数:

def greet_user():#关键字def来告诉python你要定义一个函数,这是函数定义,以冒号结尾,括号必不可少,因为可能在括号内指出函数为完成其任务,                                                 需要什 么样的信息

"""显示简单的问候语"""  #描述函数是做什么的,被称为文档字符串的注释

print("Hellow!")     #是函数体内唯一的一行代码,表示函数只做一项工作,打印hellow!

greet_user()               #表示调用这个函数

向函数传递信息:

def greet_user(username): #通过在这里添加username,调用它时给username指定一个值

print("Hellow!"+username)

greet_user("jesse")

形参和实参:

def greet_user(username) #这里username是形参----函数完成其工作所需的一项信息

greet_user("jesse")                    #"jesse"是实参----是调用函数时传递给函数的信息

传递实参:鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参

传递实参的方式:

1.位置实参:要求实参顺序与形参的顺序相同

2.关键字实参:其中每个实参都由变量名和值组成;还可以使用列表和字典,关键字实参的顺序无关紧要

默认值:编写函数时,可给每个形参指定默认值,在调用函数中给形参提供了实参时,python将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略相应的实参

***使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。这样python依然能够正确地解读位置实参

***可混合使用位置实参、关键字实参和默认值

返回值-----重点

函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值

可使用return语句将值返回到调用函数的代码行

***如果需要用到函数的处理结果(调用结果)那么就写return,不需要的话,就不用写

def get_formatted_name(first_name,last_name):  #函数get_formatted_name()的定义通过形参接受名和姓

full_name=first_name+' '+last_name               #并将结果存储在变量full_name中

return full_name                                              #将结果返回到函数调用行

musician=def get_formatted_name('jimi','hendrix')  #调用返回值的函数时,需要提供一个变量,用于存储返回的值

print(musician)

让实参变成可选的:给形参指定一个默认值---空字符串

def get_formatted_name(first_name,last_name,middle_name=' '):可以给形参middle_name指定一个默认值---空字符串,并将其移到形参列表的末尾

返回字典:

函数可返回任何类型的值,包括列表和字典等较复杂的数据结构

def build_persom(first_name,last_name):

person={'first':first_name,'last':last_name}

return person

musician=build_persom('wang','xiang')

print(musician)

结合使用函数和while循环:

def get_formatted_name(first_name,last_name):

full_name=first_name+' '+last_name

return full_name

while True:

print("请输入你的名和姓")

print("退出,请输入q")

f_name=input("first_name:")

if f_name=='q':

break

l_name=input("last_name:")

if l_name=='q':

break

formatted_name=get_formatted_name(f_name,l_name)

print(formatted_name)

8.4传递列表:向函数传递列表

def greet_users(names):

for name in names:

msg="hellow,"+name

print(msg)

username=['jack','bob','ken']

greet_users(username)

---在函数中修改列表:将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永久性的

#每个函数都应只负责一项具体的工作

def print_models(unprinted_designs,completed_models):

# 模拟打印每个设计,直到没有未打印的设计为止

# 打印每个设计后,都将其移到completed_models中

while unprinted_designs:

current_designs = unprinted_designs.pop()

# 模拟打印过程

print("开始打印:"+current_designs)

completed_models.append(current_designs)

def show_completed_models(completed_models):

# 显示打印好的所有模型

print("已打印好的")

for completed_model in completed_models:

print(completed_model)

unprinted_designs=['iphone case','robot pendant','dodecahedron']

completed_models=[]

print_models(unprinted_designs,completed_models)

show_completed_models(completed_models)

8.5传递任意数量的实参--有时,预先不知道函数需要接受多少个实参,python允许函数从调用语句中收集任意数量的实参

def make_pizza(*toppings):

print(toppings)

make_pizza('pepperonil')

make_pizza('pepperonil','green','extra cheese')

#形参名*toppings中的星号让python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中。即便函数收到一个值也如此

8.5.1结合使用位置实参和任意数量实参

--如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后

def make_pizza(size,*toppings):

print(“\nMaking a”+str(size)+"-inch pizza with the following toppings:")

for topping in toppings:

print(topping)

make_pizza(16,'pepperonil')

make_pizza(12,'pepperonil','green','extra cheese')

8.5.2 使用任意数量的关键字实参

--有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键-值对-----调用语句提供了多少就接受多少

def make_car(manufacturer, model, **options):#两个星号让python创建一个空字典

"""Make a dictionary representing a car."""

car_dict = {

'manufacturer': manufacturer.title(),

'model': model.title(),

}

for option, value in options.items():

car_dict[option] = value

return car_dict

my_outback = make_car('subaru', 'outback', color='blue', tow_package=True)

print(my_outback)

my_accord = make_car('honda', 'accord', year=1991, color='white',headlights='popup')

print(my_accord)

-

python教程从入门到实践第八章_python:从入门到实践--第八章:函数相关推荐

  1. python从入门到实践课后题_Python 从入门到实践 函数篇 8-6-8习题

    #coding:gbk def get_formatted_name(firstname,lastname):#定义一个函数 #包含firstname和lastname '''返回整洁的姓名''' f ...

  2. 儿童python编程能给孩子带来哪些好处_python编程入门学习对孩子成长有哪些优势?...

    python编程语言学习有意义吗? python编程语言是少儿编程培训课程中重要的组成部分,随着越来越多的孩子开始接触和学习编程,通过编程学习培养孩子良好的学习习惯和锻炼提升孩子逻辑思维能力.在pyt ...

  3. python爬虫爬取豆瓣电影信息城市_Python爬虫入门 | 2 爬取豆瓣电影信息

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

  4. python强制用什么作为语句缩进符号_python从入门到放弃 第二天 谈谈python代码中的冒号和缩进...

    如同格子衬衫一样规整的源代码书写层次,是一个优秀的码农必备的编程习惯.python的作者无意就是这样一个人. python是用冒号(:)和强制缩进作为代码层次来划分代码组的.这是一个很小的知识点,但是 ...

  5. python从入门到精通学习笔记_Python从入门到精通之基础概念

    编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 -*- ...

  6. python循环控制语句将数值转化成字符串_python基础入门详解(文件输入/输出内建类型字典操作使用方法)...

    f=open("foo.txt") line=f.readline() while line: print line, line=f.readline() #读取一行,包括换行符' ...

  7. python中sklearn实现决策树及模型评估_Python sklearn决策树算法实践

    scikit-learn简称sklearn,支持包括分类.回归.降维和聚类四大机器学习算法.还包含了特征提取.数据处理和模型评估三大模块.sklearn是Scipy科学计算库的扩展,建立在NumPy和 ...

  8. python中if语句and和or用法_Python从入门到精通——一文读懂if语句用法

    1.if语句概述 if语句能够进行条件测试,并依据一定的条件进行具体的操作 2.if语句条件测试 if语句的核心是一个值为True或False的表达式,这种表达式称为条件测试.Python根据条件测试 ...

  9. python新手入门英文词汇笔记(1-1)_Python新手入门英文词汇(1-1)

    英文词汇总结 一.交互式环境与print输出 1.print:打印/输出 2.coding:编码 3.syntax:语法 4.error:错误 5.invalid:无效 6.identifier:名称 ...

最新文章

  1. Strom序列化机制
  2. DNS解析污染原理——要么修改包,要么直接丢弃你的网络包
  3. 使用Silverlight3中的DataPager实现服务器端分页
  4. 基于.NET Standard的分布式自增ID算法--美团点评LeafSegment
  5. Istio 在阿里云容器服务的部署及流量治理实践
  6. [唐诗]183清平调词三首-李白
  7. Bootstrap table列内容过长,显示固定长度,超过内容隐藏
  8. 语义分割之PointRend论文与源码解读
  9. java 冒泡算法_关于java中的冒泡算法
  10. 详解springBoot集成activiti7,工作流实战案例(三)
  11. 【something】简单的平均脸制作
  12. php copy函数 失败,wamp中的copy函数bug
  13. 数据库小技能:序列和伪列
  14. unet医学肺部ct图分割简单记录
  15. 学习《C++ Primer Plus》习题篇1 第六版第6章习题
  16. STM32定时器-6步PWM输出
  17. 【NLP】一文理解Seq2Seq
  18. 手把手教你撸一个泡妞神奇
  19. TL431的应用及应用仿真
  20. realvnc的卸载

热门文章

  1. python保存运行结果下次使用_将python运行结果保存至本地文件中的示例讲解
  2. 鼠标在计算机上被关闭了怎么处理,鼠标驱动程序丢失导致系统自动关闭的解决方法...
  3. cactiez mysql_cactiez使用mysql数据库出现以下报错:“[ERROR] /usr/sbin/mysqld”
  4. php安装event扩展的问题
  5. ASCII码与字符串的相互转换
  6. FreeBSD从零开始---安装后配置(三)
  7. cocos2d-x编程之CCScale9Sprite典型用法
  8. 2011年2月--2011年7月数据库性能优化过程
  9. php多文件压缩的功能函数
  10. mysql 架构名_MySQL 逻辑体系架构