zoukankan      html  css  js  c++  java
  • python学习之路day5

    即:s_gbk.decode("gbk").encode("utf-8")    

    #标明自己(s_gbk)是什么编码(gbk),要解码(decode)or编码(encode)


    import sys

    print(sys.getdefaultencoding())      #显示 utf-8 文件编码为 utf-8
    s="你好"                    #但是s是unicode编码
                       #因此s.decode()是不存在的

    函数与函数式编程

    1.面向对象  >>类   class

    2.面向过程  >>过程  def

    3.函数式编程  >>函数  def


    过程.VS.函数

    过程和函数都可以调用,过程就是没有返回值的函数

    但是在python中,过程也被当成函数,返回值为None,函数也可以没有返回值


    return的个数,类型都不限定!

    但是---------实际上python返回的是一个元组,里面包含了上面这些(选中的)数据

     


     

    实参与形参 

    def test(x,y)括号里的参数是形式参数,接收实际参数的值,def之外的test(y,x)是实际参数

    def test(x,y,z):
      print(x)
      print(y)
      print(z)
    test(2,z=1,y=4)    #注意z,y的顺序

    结果依次是:2, 4, 1

    def test(x,y=1,z=2):    #默认参数y=1,z=2,即实参只有一个时,y,z也有默认的值(1,2)

    形参数量应该等于实参,实参可能少(有默认参数)即:实参<=形参

    当实参数量不固定时,形参的形式应该为:

    def test(*args)    #args为变量名  注意*号

    这样args可以接收多个实参,并放在一个元组里(--,--,--,--)


     

    这样*args就接受了(2,3,4,5,6,7),x接收了1

    *args接收N个位置参数,转换成元组的方式


     

     **kwargs:接收N个关键字参数,转换成字典的方式

    def test2(**kwargs):

      print(kwargs)

    test2(name='alex',age=8,sex='F')    #关键字参数指:xxx=yyy的形式

    像上面的*args和**kwargs这样的参数组,必须放在位置参数的后面!


    局部变量和全句变量

    def 里面的变量就是局部变量,只在def里面作用

    全局变量是在整个程序中生效的变量,尽管在def中全局变量可以被修改,但出了def全局变量就还是原来定义的值。

    当全局变量与局部变量同名时:
    在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

    但是------------------如果def里面申明了全局变量,则真正修改了全局变量

    格式:global 全局变量

    全局变量一定要在def外面显示的定义而不是在函数里定义

    但绝对不要使用这种方法(在函数里面定义全句变量),一旦出错导致程序的调试极其麻烦!


    虽然上面说了函数里面不能改全局变量,但是这仅仅针对字符串和整数;像列表,字典,集合,类等都可以在局部里改全局的(在def函数里改全句变量的值)(元组本来就不能改)


    递归

    在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数

    递归特性:

    1. 必须有一个明确的结束条件

    2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

    3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

    最多递归999次


    高阶函数

    变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

    def add(x,y,f):

        return f(x) + f(y)
    res = add(3,-6,abs)
    print(res)

    这个例子abs是内置的函数,取绝对值。f接收abs函数,最后返回9

  • 相关阅读:
    模态视图-多视图应用
    linux下查看文件夹的大小
    CentOS的字符集locale的设置
    CentOS 7 设置中文环境
    GCC中文错误提示
    ubuntu的交换分区和系统休眠
    CentOS使用EPEL YUM源
    git将远程仓库最新版本拉到本地仓库
    git的全局变量
    ssh:Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open
  • 原文地址:https://www.cnblogs.com/gilgamesh-hjb/p/7216930.html
Copyright © 2011-2022 走看看