函数

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. glibc溢出提权CVE-2018-1000001总结

    遇到了好几个centos6.5,一直尝试想提权.暂未成功,靶机内核:2.6.32-696.18.7.el6.x86_64. glibc版本:ldd (GNU libc) 2.12 目前编译过程中都发现 ...

  2. v-if与v-show的使用

    vue中的v-if与v-show 区别:v-if='false'的会直接在html里删掉,浏览器中看html的结构不会有 v-show='false'只是样式为overflow:hidden; 所以很 ...

  3. 关于elementui表单数字校验踩坑记

    需求:1.输入类型是数字.2.数字大小有限制.3.非必填 做法: <el-form-item label="熟悉程度" prop="averageCaseRunTi ...

  4. 关于computed使用时报no-side-effects-in-computed-properties错误

    不要在计算属性内直接修改data里面的数据,eslint会报 no-side-effects-in-computed-properties 错误,如果非要改可以写在一个函数里,然后在计算属性里调用该函 ...

  5. 解决Angular2 (SystemJS) XHR error (404 Not Found) loading traceur

    初学Angular2,跟着Angular2中文网学到HTTP这一节时出现了一个异常: GET http://localhost:3000/traceur 404 (Not Found) Error: ...

  6. 突破瓶颈,再出发 - PM过程能力成熟度5级

    尽管程度不同,但PM的每个级别都在践行过程改进,并在4级借助数据,达到了“登峰造极”的程度.随着量化与统计分析的深入,项目会被优化到极其稳定的状态,组织的过程改进也就此进入了平台期. 平台期可以被视为 ...

  7. 【Objective-C学习笔记】变量和基本的数据类型

    OC是增强了C的特性,所以在变量和基本数据类型上基本与C一致. 在OC中变量命名有如下规则: 由字母.数字.下划线.$符号组成 必须以字母.下划线.$符号开头 大小写敏感 在OC中定义变量的时候不能使 ...

  8. Python的应用小案例

    1.python统计文本中每个单词出现的次数: #coding=utf-8__author__ = 'zcg' import collectionsimport os with open('abc.t ...

  9. ajax实现用户登陆,退出,java做后端

    最近http老师布置了个任务,用cookie完成登陆,退出.Http老师讲的是node.js写后端,由于自己还是擅长java些,还是用Java做了. 以前跟着教程写过一个网站,当初是用jsp+serv ...

  10. Redis和MongoDB的区别(面试受用)

    项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB. 最近又想起为什么用MongoDB,就查阅一下,汇总汇总: 之前也用过redis ...