---def test(x):   # def:定义函数的关键字,test:函数名, x相当于以前函数中的自变量
使用函数的好处:
1.代码重用
2.保持一致性,易于维护
3.可扩展性
def test(x):   # def:定义函数的关键字,test:函数名, x相当于以前函数中的自变量
'''
2*x+1
:param x:整形数字
:return: 返回计算结果
'''
y=2*x+1
return y def test():
'''
2*x+1
:param x:整形数字
:return: 返回计算结果
'''
x=3
y=2*x+1
return y
a=test()
print(a)
---过程:就是没有返回值的函数
总结:
# 返回值数=0,返回None
# 返回值数=1,返回object(对象原本是什么,返回什么)
# 返回值数>1,返回tuple
def test01():
msg = 'test01'
print(msg) def test02():
msg = 'test02'
print(msg)
return msg def test03():
msg = 'test03'
print(msg)
return 1,2,3,4,'a',['alex'],{'name':'alex'},None def test04():
msg = 'test03'
print(msg)
return {'name':'alex'}
t1=test01()
t2=test02()
t3=test03()
t4=test04()
print(t1)
print(t2)
print(t3)
print(t4)
# test01
# test02
# test03
# test03
# None
# test02
# (1, 2, 3, 4, 'a', ['alex'], {'name': 'alex'}, None)
# {'name': 'alex'}
---函数参数
# 1.形参变量只有在被调用时才分配内存单元,调用结束时,即刻释放所分配的内存单元,(相当于门牌号)
# 因此,形参只在函数内部有效,函数,函数调用结束返回主调用函数后则不能再使用该形参变量
# 2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,他们都必须有确定的值,(基本数据类型)
# 以便把这些值传送给形参,因此应预先用赋值,输入的方法使参数获得确定值
def calc(x,y): #x=2,y=3
res=x**y
return x
return y
res=calc(2,3) # 实参:常量
# print(x)
# print(y)
print(res)
# a=10
# b=10
# calc(a,b) # 实参:变量 def test(x,y,z):#x=1,y=2,z=3
print(x)
print(y)
print(z)
#3.位置参数,必须一一对应,缺一不行多一也不行
# test(1,2,3) #4.关键字参数,无须一一对应,缺一不行多一也不行
# test(y=1,x=3,z=4) #位置参数必须在关键字参数左边
# test(1,y=2,3)#报错
# test(1,3,y=2)#报错
# test(1,3,z=2)
# test(1,3,z=2,y=4)#报错
# test(z=2,1,3)#报错
# type='mysql' 默认参数
# def handle(x,type='mysql'):
# print(x)
# print(type)
# handle('hello')
# handle('hello',type='sqlite')
# handle('hello','sqlite') # def install(func1=False,func2=True,func3=True):
# pass
#参数组:**字典 *列表
def test(x,*args):
print(x)
print(args) test(1)
#
# ()
test(1,2,3,4,5)
#
# (2, 3, 4, 5)
test(1,{'name':'alex'})
#
# ({'name': 'alex'},)
test(1,['x','y','z'])
#
# (['x', 'y', 'z'],)
test(1,*['x','y','z'])
#
# ('x', 'y', 'z')
test(1,*('x','y','z'))
#
# ('x', 'y', 'z') # def test(x,**kwargs):
# print(x)
# print(kwargs)
# test(1,y=2,z=3)
# test(1,1,2,2,2,2,2,y=2,z=3)
# test(1,y=2,z=3,z=3)#会报错 :一个参数不能传两个值 def test(x,*args,**kwargs):
print(x)
print(args,args[-1])
print(kwargs,kwargs.get('y'))
# test(1,1,2,1,1,11,1,x=1,y=2,z=3) #报错
test(1,1,2,1,1,11,1,y=2,z=3)
#
# (1, 2, 1, 1, 11, 1) 1
# {'y': 2, 'z': 3} 2 # test(1,*[1,2,3],**{'y':1})

day8-函数的更多相关文章

  1. python全栈开发-Day8 函数基础

    python全栈开发-Day8 函数 一 .引子 1. 为何要用函数之不用函数的问题 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需 ...

  2. Day8 函数指针做函数参数

    课堂笔记 课程回顾         多态 virtual关键字 纯虚函数 virtual func() = 0;         提前布局vptr指针 面向接口编程 延迟绑定 多态的析构函数的虚函数. ...

  3. python基础一 day8 函数

    函数的定义与函数的调用是两个部分 定义函数的时候里面的代码不执行,等到调用函数的时候再执行 只写return和不写return返回None 函数遇到return,这个函数就被结束            ...

  4. day8.函数基础

    一.函数介绍 1.什么是函数     函数就是盛放代码的容器,把实现某一功能的一组代码丢到一个函数中     就做成了一个小工具       具备某一功能的工具->函数     事先准备工具的过 ...

  5. Learn day8 re正则表达式\search函数\反射\tcp发送消息(循环)\udp发送消息

    1.匹配单个字符 # ### 正则表达式 - 单个字符匹配 import re ''' findall 把匹配的结果直接返回到列表中 lst = re.findall("正则表达式" ...

  6. python基础知识-day8(函数实战)

    1 def out(): 2 username=input("请输入用户名:\n") 3 password=input("请输入密码:\n") 4 return ...

  7. python_way,day8 面向对象【多态、成员--字段 方法 属性、成员修饰符、特殊成员、异常处理、设计模式之单例模式、模块:isinstance、issubclass】

    python_way day8 一.面向对象三大特性: 多态 二.面向对象中的成员 字段.方法属性 三.成员修饰符 四.特殊成员 __init__.__doc__.__call__.__setitem ...

  8. Python之路,Day8 - Socket编程进阶

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...

  9. Day8 - Python网络编程 Socket编程

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...

  10. ##DAY8 界面通信

    ##DAY8 界面通信 注意:延展中写的东西只能在类内使用 #pragma mark ———————属性传值—————————— (第一个页面往第二个页面传值) 一.属性传值:(第一个页面往第二个页面 ...

随机推荐

  1. JAVA保留小数点位数

    /** * java 如何保留指定位数的小数 * @author Administrator * */ public class Test04 { public static void main(St ...

  2. POST PUT 小解

    POST 主要是用来提交数据让服务器进行处理的,PUT主要是请求数据的. POST 提交的数据放在HTTP正文里面,而PUTT提交的数据放在url里面.

  3. 【websocket】spring boot 集成 websocket 的四种方式

    集成 websocket 的四种方案 1. 原生注解 pom.xml <dependency> <groupId>org.springframework.boot</gr ...

  4. std::multiset

    Set.multiset都是集合类, 差别在与set中不允许有重复元素, multiset中允许有重复元素. sets和multiset内部以平衡二叉树实现.   multiset 多重集合容器是一个 ...

  5. lcx 内网转发

    把放置到已经控制的内网主机 执行 内网主机输入命令lcx.exe -slave 外网ip 外网端口 内网ip 内网端口lcx.exe -slave 30.1.85.55 2222 127.0.0.1 ...

  6. linux-查看服务器内存使用情况(free top)

    free命令:显示系统使用和空闲的内存情况,包括物理内存.交互区内存(swap)和内核缓冲区内存. [root@ipha-dev71- workspace]# free # kb total used ...

  7. 详解JavaScript调用栈、尾递归和手动优化

    调用栈(Call Stack) 调用栈(Call Stack)是一个基本的计算机概念,这里引入一个概念:栈帧. 栈帧是指为一个函数调用单独分配的那部分栈空间. 当运行的程序从当前函数调用另外一个函数时 ...

  8. 关闭ESlint 语法检测配置方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qappleh/article/detai ...

  9. tp5底层源码分析之------tp5.1类的自动加载机制

    tp框架作为国内主流框架,目前已经发布了6.0版本,相当于3.*版本是进行了重构,今天我们从源码的角度来研究下tp5.1自动加载的实现 作为单入口框架,从入口文件看起,入口文件在public/下,那么 ...

  10. 基于 HTML5 + Canvas 实现的 PID 可视化系统

    前言 随着工业物联网和互联网技术的普及和发展,人工填料的方式已经逐渐被机械设备取代.工业厂商减小误操作.提升设备安全以及追求高效率等制造特点对设备的要求愈加高标准.严要求.同时机械生产以后还需遵从整个 ...