函数

1.函数:完成特定功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数

在现实中,很多问题要通过一些工具进行处理==>可以将工具提前生产出来,并命名==>通过名字就可以找到工具==>使用工具来解决问题

2. 函数的优点:

  1.避免代码的冗余

  2.让程序代码结构更加清晰

  3.让代码具有复用性,便于维护

3.函数四部分:

  1.函数名:使用该函数的依据。

  2.函数体:完成特定功能的代码块

  3.返回值:功能完成的反馈结果

  4.参数:完成功能需要的条件信息

定义函数的语法:通过def关键字来定义: (例)

def get_water(water,money):
print('收到你的%d元钱'% money)
print('给你需要的%s饮料'% water)
return '冰红茶'
a = get_water('冰红茶',10) # 将函数执行的结果返回给 a,然后将代码块执行出来。
print(a) # 此处打印的是return返回的结果,与代码块无关 -->‘冰红茶’

函数的使用:

使用函数:

  1.根据需求定义函数

  2.通过函数名找到函数所在的位置(内存地址)

  3.函数名()  执行函数地址中存放存放的代码块。。。---函数在定义时需要外界的参数,就要在调用时传入对应的参数

  4.函数执行完一定会有返还结果,通过return 关键字将结果返还给外界   ---外界需要知道执行结果,通过return 关键字将结果返回给外界

**** 注意:函数需要先定义之后才能使用

1.1.函数的四部分都可以都可以根据用户需求的变化而变化

def get_water(water,money):
print('收到你的%d元钱'% money)
print('给你需要的%s饮料'% water)
return water

1.2.需要使用函数,就调用一次

a = get_water('冰红茶',10)  # 将函数执行的结果返回给 a,然后将代码块执行出来。
print(a) # 此处是返还的指定 water 也就是 --> ‘冰红茶’

1.3.如果又有需求,再调用一次,代码可以重复使用,函数只有一个,代码结构清晰而且不冗余

b = get_water('王老吉',88)  # 可以直接重复使用这个函数
print(b)            # 返回结果 ‘王老吉’

函数的分类

1.根据函数整体的分类

  1.空函数:pass来填充函数体-----优先声明函数名,暂时不太明确函数体该怎么写(但是编程中就存在一些没有函数体的函数)在开发初期,可以将所有功能提前列出来,用pass占位,后期再去填充功能体

def login():pass

  3.非空函数:有函数体的函数

def fn2()
print('此处写入函数体') # 此处为写入的函数体

2.根据函数参数分类:

  1.无参函数:

def add():
print('功能体不需要外界的参数')
n1 = input('账号:')
n2 = input('密码:')
print(n1 + n2)
add()      # 直接调用。

  2.有参函数

def add_two(n1,n2):
print('功能体此需要外界的参数')
print(n1+n2) # 此处是函数块的运算
add_two(10,20) # 需要外界写入明确的值来让函数计算

3.根据函数返回值分类:所有的函数都有返回值

  1.不明确返回值

def low_two(n1,n2):
# 外界不需要知道内部的执行结果
print(n1 - n2)
low_two(100,10) # 没有明确返回值

  2.明确返回值

def low_two(n1,n2):
print(n1 - n2)
res = low_two(100,20) #此处有明确的返回值
print(res)

函数的返回值

****重点:函数名()

  1.拿到函数地址-->2. 必须加()来执行函数体 --> 3 .得到函数的执行结果

*****重点:返回值的功能

  1.结束函数 -->  2 . 将函数的内部数据返回给外部

2.应用场景

  1.不明确return关键词的函数:是指系统在函数的最末尾自动添加了return,而返回的值是None

def fn1():
print('普通的函数执行')
res = fn1() # 一般不需要对这样的函数进行执行接受执行结果
print(res)

  2.明确return关键词的函数:为了结束函数而return

def print_msg():
while True:
msg = input('mssag:')
if msg == 'Q':
# break
return # 在特定的位置需要直接结束函数,但是不需要告诉外界某个结果,使用空return处理
print(msg)
# print(msg) # 在break下才能被执行,在return下不能被执行
res = print_msg()
print(res)

  3.有明确的返回值需求的函数:

    1.python中的函数在本质上只能返回一个值

    2.值跟在return关键词后面

    3.可以通过语法上返回多个值,值之间用逗号隔开,但是本质上返回装有多个值的元祖。

  1.一个值:

def get_num():
num = input('num:')
return num # 只返回一个值
print(get_num())

  2.多个值:

def get_two_num():
n1 = input('输入:')
n2 = input('输出:')
return (n1,n2) # 可以返回多个值
print(get_two_num())
num1,num2 = get_two_num()  # python的return支持多个值返回的语法原因是python中有解压赋值
print(num1,num2)

python第十天的更多相关文章

  1. 初学 Python(十五)——装饰器

    初学 Python(十五)--装饰器 初学 Python,主要整理一些学习到的知识点,这次是生成器. #-*- coding:utf-8 -*- import functools def curren ...

  2. 初学 Python(十四)——生成器

    初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...

  3. 初学 Python(十二)——高阶函数

    初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...

  4. 初学Python(十)——列表生成式

    初学Python(十)--列表生成式 初学Python,主要整理一些学习到的知识点,这次是列表生成式. # -*- coding:utf-8 -*- ''''' 列表生成式 ''' #一行代码表达所有 ...

  5. Python第二十四天 binascii模块

    Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...

  6. Python第二十六天 python装饰器

    Python第二十六天 python装饰器 装饰器Python 2.4 开始提供了装饰器( decorator ),装饰器作为修改函数的一种便捷方式,为工程师编写程序提供了便利性和灵活性装饰器本质上就 ...

  7. Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块

    Python第十五天  datetime模块 time模块   thread模块  threading模块  Queue队列模块  multiprocessing模块  paramiko模块  fab ...

  8. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

  9. Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys.exit()调用 optparse argparse

    Python第十天   print >> f,和fd.write()的区别    stdout的buffer  标准输入 标准输出  从控制台重定向到文件  标准错误   重定向 输出流和 ...

  10. Python第十课学习

    Python第十课学习 www.cnblogs.com/yuanchenqi/articles/5828233.html 函数: 1 减少代码的重复 2 更易扩展,弹性更强:便于日后文件功能的修改 3 ...

随机推荐

  1. web服务器负载均衡与集群基本概念二

    前面已经说过负载均衡的作用是在多个节点之间按照一定的策略(算法)分发网络或计算处理负载.负载均衡可以采用软件和硬件来实现.一般的框架结构可以参考下图.    后台的多个Web节点上面有相同的Web应用 ...

  2. [C#学习笔记1]用csc.exe和记事本写一个C#应用程序

    csc.exe是C#的命令行编译器(CSharpCompiler),可以编译C#源程序成可执行程序.它与Visual Studio等IDE(Integrated Development Environ ...

  3. 3D GIS 应用开发 —— 基于 Mapbox GL 的实践总结

    最近在折腾的 web 端的可视化项目,由于相关业务的需要,用到了 Mapbox 这一地图开发的神器.在此先奉上一个基于mapbox-gl实现的demo(来源:uber的deck.gl项目): 下面我们 ...

  4. “宇宙最强” IDE,Visual Studio 2019 正式发布

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 本文由葡萄城翻译并发布 今天凌晨Visual Studio 2019已经正式发布,现在已经可以下载了.使用V ...

  5. iOS----------Xcode 无线调试

    环境要求: 至少Mac OSX 10.12.6 iOS 11 Xcode 9 1. ”自己的工程“ -> windows -> Device and Simulators ,打开设备和模拟 ...

  6. MySQL 基础知识梳理学习(七)----sync_binlog

    一般在生产环境中,很少用MySQL单实例来支撑业务,大部分的MySQL应用都是采用搭建集群的方法.搭建MySQL集群,可以进行数据库层面的读写分离.负载均衡或数据备份.基于MySQL原生的Replic ...

  7. go语言打造p2p网络

    传送门: 柏链项目学院 就像1000个人眼中有1000个哈姆雷特一样,每个人眼中的区块链也是不一样的!作为技术人员眼中的区块链就是将各种技术的融合,包括密码学,p2p网络,分布式共识机制以及博弈论等. ...

  8. C# -- 等待异步操作执行完成的方式

    C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: class Program { static void Main(string[] args) { Func<int ...

  9. Vue组件之全局组件与局部组件

    1全局注册实例 <div id="app"> <com-btn></com-btn> <com-btn></com-btn&g ...

  10. 好程序员告诉你HTML好在哪里,为什么值得我们学习

    好程序员告诉你HTML好在哪里,为什么值得我们学习,HTML5对于用户来说,提高了用户体验,加强了视觉感受.HTML5技术在移动端,能够让应用程序回归到网页,并对网页的功能进行扩展,用户不需要下载客户 ...