函数概念:

1.为什要有函数

  组织结构不清晰,可读性差,代码冗余,可扩展性差。

2.什么是函数

   具备某一个功能的工具---》函数
     事先准备工具-》函数的定义
     拿来就用、重复使用-》函数的调用
     ps:先定义后调用

函数的分类:

1.内置函数:len,max(10,11),help(函数名),python中给你写好的。

2.自定一函数def

  语法:
            def 函数名(参数1,参数2,...):
                """注释"""
                函数体
                return 返回值

函数的使用:

 

内置的函数:(直接使用 就好)

  1. l1=[1,2,3,4,5]
  2. print(max(l1))
  3.  
  4. 5

自定义函数:

  

  1. # def func(): #定义i阶段相当于在内存空间中的定义了这个名字,就相当于写了一个变量
  2. # print("hello world") #定义和函数体代码之间需要空4个空格
  3. # return 333
  4. #
  5. #
  6. # func() #调用阶段,执行函数体代码
  7. #hello world
  8.  
  9. #########返回值的使用:
  1. #return的特点:
  2. #1、 函数内可以有多个return,但是只能执行一次return
  3. #2、 执行return函数就立刻结束,并且return的后值当做本次调用的结果返回
  1. # def func():
    # print("hello world")
    # return 333 #函数的返回值,可以当做变量使用,不限制类型。
    #
    # a = func()
    # print(a)
  2.  
  3. #hello world
    #333

函数的参数:

1.无参函数

  

  1. def func():
  2. print("hello world")
  3. return 333

2.有参函数

  1. # def auth(name,password): #括号中即为参数,函数可以当做变量来使用
  2. # if name =='egon' and password == '123':
  3. # print('login successfull')
  4. # else:
  5. # print('user or password err')
  6. #
  7. # def interactive():
  8. # name=input('name>>: ').strip()
  9. # password=input('password>>: ').strip()
  10. # auth(name,password)
  11. #
  12. # interactive()

3.空函数:

  

  1. def func():
  2. pass #即为什么也不做的意思,在写代码的时候,用于逻辑的填补。

  

  1. '''
  2. 1 为什么要有函数?没有函数带来的困扰?
  3. 组织结构不清晰,可读性差
  4. 代码冗余
  5. 可扩展性差
  6.  
  7. 2 什么是函数
  8. 具备某一个功能的工具---》函数
  9.  
  10. 事先准备工具-》函数的定义
  11. 拿来就用、重复使用-》函数的调用
  12. ps:先定义后调用
  13.  
  14. 3 函数的分类:
  15. 内置函数:len,max(10,11),help(函数名)
  16. 自定义函数:def
  17. 语法:
  18. def 函数名(参数1,参数2,...):
  19. """注释"""
  20. 函数体
  21. return 返回值
  22. '''
  23.  
  24. #'函数即是变量'
  25. # def print_tag():
  26. # print('*'*20)
  27. #
  28. # def print_msg(): #print_msg=<function print_msg at 0x00000000027EA8C8>
  29. # print('hello world')
  30. #
  31. #
  32. # # print(print_msg)
  33. # # print(print_tag)
  34. #
  35. # print_tag()
  36. # print_msg()
  37. # print_tag()
  38.  
  39. #2、定义函数阶段都发生了什么事:只检测语法,不执行代码
  40. #定义阶段
  41. # sex='male'
  42. # def auth():
  43. # sex
  44. #
  45. # name=input('name>>: ').strip()
  46. # password=input('password>>: ').strip()
  47. # if name =='egon' and password == '123':
  48. # print('login successfull')
  49. # else:
  50. # print('user or password err')
  51. #
  52. # #调用阶段
  53. # auth()
  54.  
  55. #3、函数的使用:先定义后调用
  56.  
  57. # def bar():
  58. # print('from bar')
  59. #
  60. # def foo():
  61. # print('from foo')
  62. # bar()
  63. #
  64. # foo()
  65.  
  66. # #定义阶段
  67. # def foo():
  68. # print('from foo')
  69. # bar()
  70. #
  71. # def bar():
  72. # print('from bar')
  73. #
  74. # #调用
  75. # foo()
  76.  
  77. # # 定义阶段
  78. # def foo():
  79. # print('from foo')
  80. # bar()
  81. #
  82. # # 调用
  83. # foo()
  84. #
  85. # def bar():
  86. # print('from bar')
  87. #
  88.  
  89. #4 定义函数的三种形式
  90. #第一种:无参函数
  91. #第二种:有参函数
  92. #第三种:空函数
  93.  
  94. # def auth():
  95. # name=input('name>>: ').strip()
  96. # password=input('password>>: ').strip()
  97. # if name =='egon' and password == '123':
  98. # print('login successfull')
  99. # else:
  100. # print('user or password err')
  101. #
  102.  
  103. # def my_max(x,y):
  104. # if x >= y:
  105. # print(x)
  106. # else:
  107. # print(y)
  108. #
  109. # my_max(1,2)
  110.  
  111. # def auth(name,password):
  112. # if name =='egon' and password == '123':
  113. # print('login successfull')
  114. # else:
  115. # print('user or password err')
  116. #
  117. # def interactive():
  118. # name=input('name>>: ').strip()
  119. # password=input('password>>: ').strip()
  120. # auth(name,password)
  121. #
  122. # interactive()
  123.  
  124. def auth():
  125. pass
  126.  
  127. def put():
  128. pass
  129.  
  130. def get():
  131. pass
  132.  
  133. def ls():
  134. pass

tag警报器

  1.  
  1. exp_str = 'id<5'
    key=['>','=','<']
    res=[]
    char=''
    opt=''
    tag=False
    for i in exp_str:
    if i in key:
    tag=True
    if len(char) !=0:
    res.append(char)
    char=''
    opt+=i
    if not tag:
    char+=i
    if tag and i not in key:
    tag=False
    res.append(opt)
    opt=''
    char+=i
    else:
    res.append(char)
  2.  
  3. print(res)
  1. 这个例子将 一个 id<5 之类的字符分开变成 ['id', '<', ''] ,先设置一个空列表,用来控制输出,
    将列表改变,变成以某个字符为特殊的分割点的列表,其中非特殊字符两侧的字符串相互拼接。

函数的返回值

  1. #return的特点:
  2. #1、 函数内可以有多个return,但是只能执行一次return
  3. #2、 执行return函数就立刻结束,并且return的后值当做本次调用的结果返回
  4. # def foo(x,y):
  5. # return x+y
  6. #
  7. # res=foo(1,2)
  8. #
  9. # def my_max(x,y):
  10. # if x >= y:
  11. # return x
  12. # else:
  13. # return y
  14. #
  15. # res=my_max(1,2)
  16. # print(res)
  17.  
  18. # def foo():
  19. # print('first')
  20. # return 1
  21. # print('second')
  22. # return 2
  23. # print('third')
  24. # return 3
  25. #
  26. # res=foo()
  27. # print(res)
  28.  
  29. #1、返回的值没有类型限制
  30. # def bar():
  31. # print('from bar')
  32. #
  33. # def foo():
  34. # return bar
  35. # print(foo() is bar)
  36.  
  37. #2:return返回值的个数
  38. #2.1: 没有return:默认返回None
  39. #2.2:return 值:值本身
  40. #3.3: return 多个值:返回一个元组
  41.  
  42. # def foo():
  43. # pass
  44. # return 1,'a',[1,2]
  45. # print(foo())
  46.  
  47. #函数调用的三种形式
  48. def my_max(x,y):
  49. if x >= y:
  50. return x
  51. else:
  52. return y
  53.  
  54. # res1=my_max(1,2)
  55.  
  56. # res2=my_max(1,2)*10
  57.  
  58. # res3=my_max(my_max(1,2),3)
  59. # print(res3)
  60.  
  61. range(len([1,2,3]))

函数的参数:

  1. #函数的参数分类两种:
  2. #形参:在定义阶段括号内指定的参数,相当于变量名
  3. #实参:在调用阶段括号内传入的值称之为实参,相当于值
  4. #在调用阶段,实参的值会绑定给形参,在调用结束后解除绑定
  5. # def foo(x,y): #x=1,y=2
  6. # print(x,y)
  7. #
  8. # foo(1,2)
  9.  
  10. #在python中参数的分类:
  11. #1、位置参数:按照从左到右的顺序依次定义的参数
  12. #位置形参:必须被传值,多一个少一个都不行
  13. #位置实参:与形参一一对应传值
  14. # def foo(x,y):
  15. # print(x,y)
  16. #
  17. # foo(2,1)
  18.  
  19. #2、关键字参数:在函数调用时,按照key=value的形式定义的实参
  20. #特点:指名道姓地给形参传值,不再依赖与位置
  21. def foo(name,age,sex):
  22. print(name,age,sex)
  23.  
  24. # foo('egon',18,'male')
  25. # foo(sex='male',age=18,name='egon',)
  26. #注意:
  27. #1、 关键字实参必须在位置实参的后面
  28. #2、 不能为同一个参数赋值多次
  29.  
  30. # foo('egon',sex='male',age=18,name='egon')
  31.  
  32. #3、默认参数:在函数定义阶段,就已经为形参赋值了
  33. #特点:定义阶段已经有值意味着调用阶段可以不用传值
  34. #位置参数通常用于经常变化的参数,而默认参数指的是大多数情况下都一样的
  35. # def foo(x,y=1):
  36. # print(x,y)
  37.  
  38. # foo(1,2)
  39. # foo(y=3,x=1)
  40. # foo(111)
  41. # foo(x=1111)
  42.  
  43. # def register(name,age,sex='male'):
  44. # print(name,age,sex)
  45. #
  46. # register('egon1',18)
  47. # register('egon2',18)
  48. # register('egon3',18)
  49. # register('alex',38,'female')
  50.  
  51. #注意:
  52. #1、默认参数必须放到位置形参的后面
  53. # def register(name,sex='male',age,):
  54. # print(name,age,sex)
  55. #2、默认参数的值只在定义时被赋值一次
  56. #3、默认的参数的值通常应该是不可变类型
  57. # res=1
  58. # def foo(x,y=res):
  59. # print(x,y)
  60. #
  61. # res=10
  62. # foo('aaaaaaaa')
  63.  
  64. #4 可变长参数:在调用函数时,实参值的个数不固定
  65. #实参的形式有:位置实参和关键字实参,
  66. #形参的解决方案:*,**
  67.  
  68. #*args的用法
  69. # def foo(x,y,*args): #z=(3,4,5,6)
  70. # print(x,y)
  71. # print(args)
  72. #
  73. # # foo(1,2,3,4,5,6)
  74. #
  75. # foo(1,2,*[3,4,5,6]) #foo(1,2,3,4,5,6)
  76. # foo(*[1,2,3,4,5,6]) #foo(1,2,3,4,5,6)
  77.  
  78. # def foo(x,y):
  79. # print(x,y)
  80. #
  81. # foo(*(1,2)) #foo(1,2)
  82.  
  83. #**kwargs
  84. # def foo(x,y,**kwargs): #kwargs={'c':5,'a':3,'b':4}
  85. # print(x,y)
  86. # print(kwargs)
  87. #
  88. # # foo(y=2,x=1,a=3,b=4,c=5)
  89. #
  90. # foo(y=2,**{'c':5,'x':1,'b':4,'a':3}) #foo(y=2,a=3,c=5,b=4)
  91.  
  92. # def foo(name,age):
  93. # print(name,age)
  94.  
  95. # foo(**{'name':'egon','age':18})
  96. # foo({'name':'egon','age':18})
  97.  
  98. # def bar(x,y,z):
  99. # print(x,y,z)
  100. #
  101. # def wrapper(*args,**kwargs): #args=(1,),kwargs={'z':2,'y':3}
  102. # # print(args,kwargs)
  103. # bar(*args,**kwargs) #bar(*(1,),**{'z':2,'y':3}) #bar(1,z=2,y=3,)
  104. #
  105. # wrapper(1,z=2,y=3)
  106.  
  107. #命名关键字参数:指的是定义在*后的参数,该参数必须被传值(除非有它有默认值),而且必须按照key=value的形式传值
  108. # def foo(x,y,*args,m=100000,n):
  109. # print(x,y)
  110. # print(args)
  111. # print(m,n)
  112. #
  113. # foo(1,2,3,n=4,)
  114. #

day3 python 阿狸的进阶之路的更多相关文章

  1. python 阿狸的进阶之路(9)

    tcp传输: 传输需要ack回应,然后才清空缓存,服务端先起来. tcp流式协议,tcp的Nagle的优化算法,会将时间间隔短,数据量小的打包成一个,然后发送给对方,减少发送的次数. UDP协议: 不 ...

  2. python 阿狸的进阶之路(6)

    常用模块 json # 序列化 #将内存的数据存到硬盘中,中间的格式,可以被多种语言识别,跨平台交互数据 #json 可以将字典之类的数据类型存到字典中 import json dic = {&quo ...

  3. python 阿狸的进阶之路(5)

    一.模块 1.什么是模块: 包含了一组功能的python文件,文件名是xxx.py,模块名是module. 可以使用 import module,四个通用的类别: (1)用python编写的py文件 ...

  4. python 阿狸的进阶之路(8)

    异常处理 http://www.cnblogs.com/linhaifeng/articles/6232220.html(转) 网络编程socket http://www.cnblogs.com/li ...

  5. python 阿狸的进阶之路(7)

    面向对象 转自林海峰的博客  http://www.cnblogs.com/linhaifeng/articles/6182264.html 面向对象的理解: 将数据分类,比如学生类.数据有关的函数, ...

  6. python 阿狸的进阶之路(4)

    装饰器 #1.开放封闭原则:对扩展开放,对修改是封闭#2.装饰器:装饰它人的,器指的是任意可调用对象,现在的场景装饰器->函数,被装饰的对象也是->函数#原则:1.不修改被装饰对象的源代码 ...

  7. Python 从入门到进阶之路(一)

    人生苦短,我用 Python. Python 无疑是目前最火的语言之一,在这里就不再夸他的 NB 之处了,本着对计算机编程的浓厚兴趣,便开始了对 Python 的自学之路,并记录下此学习记录的心酸历程 ...

  8. Python 从入门到进阶之路(七)

    之前的文章我们简单介绍了一下 Python 中异常处理,本篇文章我们来看一下 Python 中 is 和 == 的区别及深拷贝和浅拷贝. 我们先来看一下在 Python 中的双等号 == . == 是 ...

  9. Python 从入门到进阶之路(六)

    之前的文章我们简单介绍了一下 Python 的面向对象,本篇文章我们来看一下 Python 中异常处理. 我们在写程序时,有可能会出现程序报错,但是我们想绕过这个错误执行操作.即使我们的程序写的没问题 ...

随机推荐

  1. 使用Apache Mesos和Consul实现服务的注册发现

    为保证基于Docker应用程序和服务都具有高性能和可用性,设计出一种具有服务发现,高可用性和容错能力的解决方案非常重要. 我们使用Apache Mesos 和Mesosphere的 Marathon实 ...

  2. Ajax的总结

    1.运行Ajax的环境,在服务器上才可以实现他的功能,客户端等别的地方,虽然也可以运行,但是功能一定是不全的,有可能很多东西都不会发生反应: 2.传参 (只写关键步骤)  (必须在服务器上运行) ge ...

  3. PostgreSQL中的group by

    问题描述:今天使用了PostgerSQL查询统计一下相关信息,发现 报错了 SELECT * FROM "public"."dc_event_data" WHE ...

  4. Python3 文件的重命名

    在Python3中我们要实现将本地文件homework.txt中的内容的修改操作时,大体的思路是这样的:先将homework.txt文件的内容读取到内存中,在内存中对里面的数据进行修改,接着将修改完成 ...

  5. Vue.js系列之项目结构说明

    转:https://www.jb51.net/article/111658.htm 前言 在上一篇项目搭建文章中,我们已经下载安装了node环境以及vue-cli,并且已经成功构建了一个vue-cli ...

  6. [UE4]函数分组

    函数分组相当于C#里面的“#region #end region”折叠注释

  7. Linux 网络命令找不到

    1.安装好系统,命令找不到 如ifconfig等 解决办法: sudo apt-get install net-tools sudo ifconfig 如果命令前不想加sudo 在 .bashrc 文 ...

  8. python装饰器1

    目的:在不修改原来函数代码的前提下,使用这个功能,可以使得之后这个函数被调用时增加额外的功能. #2.定义装饰器 def deco (fun): print "i am deco,i can ...

  9. U3D学习06-数学基础

    1.fixed timestep 固定帧率, 2.time scale 快慢镜头,影响的是真实时间 3.time.deltatime增量时间,物体运动不受帧频率影响,每秒移动速度需要乘deltatim ...

  10. 本地IP,掩码,网关,DNS设置

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...