函数的基础

  • 认识函数

def sum1(n):
        s = 0
        for x in range(1, 101):
                s += x
        print(s)

sum1(100)

# 1.1什么是函数
'''
函数就是实现某一特定功能的代码的封装.
(函数就是把实现某一个功能的代码打成一个包, 以后再需要直接用函数)
'''

# 2.函数分类(根据函数是谁创建的)
'''
1)
系统函数   - python自带函数:print . input.max.min等
2) 自定义函数 -  自己定义的函数
'''

#  3.定义函数/创建函数    - 造机器
'''
语法:
def 函数名(参数列表)
        函数说明文档
        函数体
       
说明:
def   - 固定写法
函数名    -   随便写个别重复关键字就行,最好见名知意义,符合命名规则就行,字母小写
( ):           -  固定写法

形参列表  - 以'变量名1 ,变量名2,...'这儿的变量名也可以没有
                   形参的作用: 将函数外部的数据传递到函数里面
                   怎么确定形参:看实现函数的功能需不需要格外的数据,需要几个
函数说明文档: 就是注释
函数体    - 就是实现函数功能的代码
'''

# 练习: 定义一个函数求任意两个数的和
def sum2(num1, num2):
        '''
       
函数功能
       
:param num1:
       
:param num2:
       
:return:
        '''
       
num3 = num1 + num2
        print(num3)

sum2(1, 2)
sum2('wo', 'shi')

# 练习1:定义,统计指定字符串中文的个数
def count_num(ss):
        count = 0
        for x in ss:
                if '一' <= x <= '\u9f5a':
                        count += 1
        print(count)

count_num('斯瓦迪亚1123')

# 练习2:定义,将数据插入到指定列表最前面
def duke(cc, dd):
        num = [''] * (len(dd) + 1)
        num[0] = cc
        for i in range(len(dd)):
                num[i + 1] = dd[i]
        print(num)

duke('zhu', ['1', 2, 3])

# 定义一个函数,任意整数阶乘
def chengfa(x):
        c = x
        for i in range(1, x):
                c *= i
        print(c)

chengfa(4)

# 定义求一个圆的面积
def mianji(r):
        import math
        s = math.pi * (r ** 2)
        print(s)

mianji(3)

# 4.函数的调用  - 使用机器
# 1)定义函数不会执行,调用才会

# 2)怎么调用
'''
语法:
函数名(实参列表)

说明:
a.函数名
b.()
c.实参列表
'''

# 3)函数调用过程
'''
当代码指向到函数调用语句的时候:
第一步: 先回到函数定义的位置
第二步: 传参(用实参给形参赋值)
第三步: 执行函数体
第四步: 确定函数返回值
第五步: 回到函数调用的位置接着往后执行

'''

  • 函数的返回值
# 1.返回值'''返回值就是从函数内部传递到函数外部的数据1)怎么将确定函数返回值(怎么将指定的数据作为函数返回值)看执行函数体的时候有没有遇到return,如果遇到return,后面的值就是返回值;如果没有return,返回值是空值2) 怎么获取函数返回值获取函数调用表达式的值就是获取函数的返回值.函数调用表达式: 调用函数的语句3)什么时候需要返回值如果实现函数的功能产生了新的数据,我们就应该将新的数据返回原因: 返回值不会被删除,调用函数,系统会创建临时的栈区域,用来保存数据,调用完会删除.'''def func1( ):return 100, 200    #(100,200)x = func1()print(x)def func2(n):print(n)return 100func2(2)       #2print(func2(3))  #3   100def func3(n):print(n)x = func3(3)    #3print(x)      #NOnedef func5():return 'abc'print('abc'[-1], func5()[-1])  #c c# 关于.函数怎么写的问题# 哪个是方法不是函数#  2.return'''retuen 在函数中有两个作用:1)返回返回值2)提前结束函数     -  执行函数体的时候如果return,函数直接结束'''def func1():print('====')returnprint('+++++')x =func1()print(x)# ====# 100# return 后面不写会返回None
  • 函数的参数
# 1. 位置参数和关键字参数    -根据实参传递方式分类'''1) 位置参数: 以'实参1,实参2,实参3,...'的形式存在,通过位置一一对应的方式来给形参赋值2) 关键字参数:  以'形参1 =实参1 '根据命名可以位置不同也行注意: 位置和关键字混用,位置参数要排前面'''def func1(x, y, z):print(f'x:{x}, y:{y}, z:{z}')func1(10, 20, 30)  # x:10, y:20, z:30func1(20, 10, 30)  # x:20, y:10, z:30func1(x=30, z=20, y=10)  # x:30, y:10, z:20func1(10, z=30, y=30)  # x:10, y:30, z:30# 2.参数默认值    -形参'''定义函数可'形参=值'赋默认值,实际不赋值也行注意:定义函数,没有默认值的要在前面'''def  func2(x=10,y=20,z=30):print(f'x:{x}, y:{y}, z:{z}')func2()       #x:10, y:20, z:30func2(100) #x:100, y:20, z:30func2(100,200)  #x:100, y:200, z:30func2(100,200,300) #x:100, y:200, z:300# def func3(x, y=20, z)      #这样会报错# 3.参数类型说明  - 定义函数的时候指定参数类型'''参数类型说明可以提示使用者在调用函数的时候该传什么数据:1.清楚2.有代码提示1) 方法1-没有默认值的参数: 形参:类型名2)方法2: 给参数赋值默认值,默认值就是参数类型'''# def func4(str1):#         passdef func4(str1:str, list1 =[1]):str1.upper()func4('anc', [1,20])# dict1 ={'a':10, 'b':'abc', 'c': [10,20]}# key = input('Key:')# xx = dict1[key]# ###***有问题# message = '[''abc'', ''sdsd'']'# # str1 = '['abc', 'cfd']'   #要用不同的引号# list2 = eval(message)  #type:list# list2.clear()# 4.  不定长参数 - 解决参数个数不确定的问题'''1)带*的不定长定义函数的时候,如果在某个形参前面加*,那么这个参数就变成了一个不定长参数,调用的时候这个形参可以接受若干个实参本质:如果形参有*,那么这个参数会变成一个元组,实参就是里面的元素注意:a. 带*的不定长参数在传参的时候只能使用位置参数b.混用参数时,这个时候不定长前用位置参数,后面用关键字2)带**的不定长参数本质: 如果形参前有**,那么这个参数就会自动变成一个字典,所有的实参会作为这个字典的键值对注意:传参的时候只能用关键字传参'''# 练习:定义一个函数,求多个数的和# sum2(10,20)# sum2(10,20,30)def func5(*num):passfunc5()func5(10,20,30,30,40)def func6(x,*y):pass# func6()      #会报错func6(10)func6(10,20,30)def func7(x,*y):sum1 = xfor i in y:sum1 += iprint(sum1)# func6()      #会报错func7(10)      #30func7(10,20,30)      #60def  funct1(x, *y, z):pass#funct1(10,20,30)  #会报错funct1(10,20,30,z=50)def func9(**x):passfunc9()func9(a=10)func9(a=0,a1=20,a3=30)def func10(*args, **kwargs):

day - 10 总结相关推荐

  1. H3CNE最新版官网考试模拟题库

    以下工作于OSI 参考模型数据链路层的设备是__A____.(选择一项或多项) A. 广域网交换机 B. 路由器 C. 中继器 D. 集线器 A 数据链路层传输的是帧,交换机是基于帧转发的:B 路由器 ...

  2. lisp协议instand_分享|Linux 上 10 个最好的 Markdown 编辑器

    在这篇文章中,我们会点评一些可以在 Linux 上安装使用的最好的 Markdown 编辑器. 你可以在 Linux 平台上找到非常多的 的 Markdown 编辑器,但是在这里我们将尽可能地为您推荐 ...

  3. 10任务栏全屏时老是弹出_Deepin 15.10 发布,深度操作系统

    深度操作系统是一个致力于为全球用户提供美观易用.安全可靠的Linux发行版. 深度操作系统基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本.台式机和一体机.深度操作系统( ...

  4. Linux shell 学习笔记(10)— 处理用户输入(命令行读取参数、读取用户输入、超时处理)

    1. 命令行参数 向 shell 脚本传递数据的最基本方法是使用命令行参数.命令行参数允许在运行脚本时向命令行添加数据. $ ./addem 10 30 本例向脚本 addem 传递了两个命令行参数( ...

  5. Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建

    Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建 一.Anaconda 创建 python3.7环境 1.进入 C:\Users\用户名 目录下,找到 ...

  6. debian 10 静态ip配置

    查看网卡 ip addr 修改配置 vim /etc/network/interfaces 模板 auto ${网卡名} iface ${网卡名} inet ${static} address ${I ...

  7. 解决 win10 pycurl安装出错 Command python setup.py egg_info failed with error code 10 编译安装包 安装万金油...

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

  8. 英特尔Intel® Arria® 10 FPGA加速器设计

    英特尔Intel® Arria® 10 FPGA加速器设计 Introducing the Intel® Vision Accelerator Design with Intel® Arria® 10 ...

  9. 保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事

    保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事 10 things to consider when securing an embedded 802.11 Wi-Fi device 随着 ...

  10. 交换机应用寻找10个完美的因素

    交换机应用寻找10个完美的因素 10 factors for finding the perfect switch for your application 选择开关的过程并不总是值得注意的.考虑到大 ...

最新文章

  1. Android webview 加载https网页显示空白
  2. Ambari2.6.2集成Kerberos
  3. 执行SQL-MapperProxy.invoke()
  4. Viola-Jones人脸检测详解
  5. 好程序员web前端分享详细了解JavaScript函数
  6. linux-用户管理
  7. MongoDB(三):数据库操作、集合操作
  8. 详解Python字符串编码格式
  9. S5PV210体系结构与接口08:定时器 计数器编程
  10. 如何理解DT将是未来IT的转型之路?
  11. python软件下载3版本-【python3下载】python3下载安装 中文版-七喜软件园
  12. 计算机二级c语言数组ppt,计算机二级C语言考试C语言学习第5讲.ppt
  13. html ssi 跟新某个空间数据_新版本|物理虚拟实验5.2.5版本即将上线
  14. MySQL数据类型有哪些?
  15. 【国产mcu填坑篇】------STC(宏晶)
  16. 博士“申请考核制”经验
  17. 多维尺度变换(multidimensional scaling, MDS)
  18. C++ SuperLU 混合编程
  19. Response.setContentType类型按文件扩展名首字母分类大全
  20. Redis超级新手指南-下篇(哪吒篇)

热门文章

  1. TuRBO(2019NIPS)—贝叶斯优化的应用
  2. eclipse安装JSEclipse
  3. liunx学习日记(一)---Linux系统的安装
  4. 一般摄影爱好者的相机推荐
  5. 寒门难再出贵子(1),一篇值得思考的文章
  6. 关于koa2中间件的运行演示
  7. Oracle数据库recover database的四条语句
  8. with open()的使用方法
  9. spring 注入方式和自动装配介绍
  10. 【链塔DApp日报】BDI指数增长5%,Chintai 24h交易额增长251%