函数

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. Spring SpringMVC MyBatis配置笔记

    工程大致结构: project |-src |----pojo |--------Temp.java |----dao |--------TempDao.java |--------TempDao.x ...

  2. CentOS7 firewalld 打开关闭端口

    1. firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status ...

  3. Dynamics 365-关于Solution的那些事(三)

    这一篇的内容,是关于Solution的使用建议的,如果大家有什么实用的建议,欢迎留言讨论. 一. 版本控制 Solution是有版本号的,率性的人可能在新建一个solution的时候,直接赋值1.0, ...

  4. 用Python将绝对URL替换成相对URL的代码

    下面的内容内容是关于用Python将绝对URL替换成相对URL的内容,应该是对码农有些用途. #!/usr/bin/env python### author : cold night# email : ...

  5. (五)图数据库数neo4j据备份与恢复

    1.备份方式 neo4j目前有三种备份方式: (1)java在线备份,通过java程序可在neo4j启动状态下备份数据,也可远程备份(社区版本目前不支持) (2)neo4j-admin工具,可在neo ...

  6. [idea] SpringBoot整合swagger2实现CRUD

    一:创建SpringBoot ,在pom.xml文件中加入jar包 <dependency> <groupId>io.springfox</groupId> < ...

  7. RocketMQ4.3.x对顺序消息的理解

    1.RocketMQ消息队列简单介绍 这里简单介绍一下RocketMQ的消息队列的模型 一个topic对应多个队列如下图: 生产者和消费者分别向队列中发送和消费消息,生产者和消费者都可以是多个,通过组 ...

  8. Docker(4):Docker集中化web界面管理平台—Shipyard部署

    //关闭防火墙 并禁止自启 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable fir ...

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

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

  10. Springboot + Atomikos + Druid + Mysql 实现JTA分布式事务

    DataSource 配置 package com.cheng.dynamic.config; import java.util.Properties; import javax.sql.DataSo ...