函数

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. kali linux 2019.1 替换burpsuite pro 1.7.37

    下面全部实操: 先切换JDK版本为1.8.执行 update-alternatives --config java 然后会显示多个jdk版本,1.8选3 输入java –version会显示jdk为1 ...

  2. (办公)mysql安装完,只能通过localhost访问,而不能通过本机ip访问.(转)

    GRANT ALL PRIVILEGES ON *.* TO '; 这里面*.*代表是所有库.所有表,root是用户名,%代表所有ip都可访问,也可指定ip访问,例如'root'@'172.17.5. ...

  3. 【English】十二、英语句子种类,陈述句、疑问句、祈使句、感叹句

    一.英语句子按照用途可以分为4类 种类.用途.例句 陈述句 用于说明事实或说话人的看法(事实不就是别人发起并被同意的看法) My name is Jennt Green. I like him bec ...

  4. ORACLE 查询某表中的某个字段的类型,是否为空,是否有默认值等

    最近写的功能中有这样一个小功能,根据数据库查询此库中是否有某表,如果有,查询某表下面的某个字段的详细信息 其中一种是... select ATC.OWNER, atC.TABLE_NAME, ATC. ...

  5. Eclipse 模板

    Eclipse 的模板:推荐一个好的内容 设置注释模板的入口:Window->Preference->Java->Code Style->Code Template 然后展开C ...

  6. mysql字段约束

    为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目. 一. unique 唯一性约束    : 值不可重复: 二. not null    非空约束    : 值不可为空: 三. def ...

  7. SpringBoot使用qq邮箱发送邮件

    最近公司要做一个邮箱注册和重置密码的功能,因为之前就做过,但是不是Springboot项目,所以相对来说还是比较容易的,在这里记录一下. 一.引用Maven依赖 这里使用spring自带的邮件jar包 ...

  8. 【心得】Lattice后端使用经验小结(ECP5UM,DDR3,Diamond3.10,Reveal逻辑分析)

    [博客导航] [导航]FPGA相关 背景 下边的内容,适合初次使用Lattice的.具备FPGA开发经验的同学. 1.初次使用,还真遇到不少的坑,Lattice的工具也有不少优缺点,通过总结,希望能缩 ...

  9. Azure存储账户的日志分析方法

    1.首先确认日志功能是否开启(日志文件根据存储账户的类型,按使用量收费 . 2.在存储账户-Usage(classic)-Metrics中查看突出流量的时间: 3.在Explorer中下载对应时间点的 ...

  10. 基于Metronic的Bootstrap开发框架--资产编码打印处理

    在开发业务管理系统的时候,往往涉及到资产信息及编码的打印处理,如我们需要对资产信息.条形码.二维码一起打印,以便贴在具体资产信息上面,方便微信公众号.企业微信进行业务处理,那么编码的打印就很有必要了, ...