zoukankan      html  css  js  c++  java
  • 【我要学python】函数的系统学习

    我的短期目标:python+CTF reverse 一起加油!

    #1,函数介绍

    1,功能性  函数目的

    2,隐藏性  (封装)  (避免写重复代码)

    例:

    1 #round为保留小数的函数
    2 
    3 a = 3.1415
    4 result = round(a,2)
    5 printf(result)
    6 
    7 #输出:3.14
    查看代码

    #2,函数的使用

    1,参数列表可以没有

    2,函数中无return 代表返回None(空值)

    例:

    #1,实现两个数字的相加
    #2,打印输入的参数
    def add(x,y)
        result = x + y
        return result
    
    def print(code)
        printf(code)
    
    add(1,1)
    print('python') #自己调用自己 递归次数太多 报错
    
    #如何修改python递归995次数限制
    import sys
    sys.setrecursionlimit(1000000) #修改限制为100万次递归次数
    
    #所以 函数的定义不要与python内置的关键字相同
    查看代码
     1 def add(x,y)
     2     result = x + y
     3     return result
     4 
     5 def print_code(code)
     6     printf(code)
     7 
     8 a = add(1,1)
     9 b = print_code('python')
    10 
    11 print(a,b)
    12 
    13 #输出
    14 python #调用到了print_code 所以会首先输出print(python)
    15 2
    16 None  #无返回值 所以输出None
    查看代码

     3,返回值(可多个)

    例:

     1 def damage(skill1,skill2):
     2     demage 1 = skill1 * 3
     3     demage 2 = skill2 * 2 + 10
     4     return damage1,damage2
     5 
     6 damages = damage(3,6)
     7 
     8 print(type(damages)) #输出为tuple类型 说明在return时不用强制加()
     9 
    10 #调用时
    11 print(damages[0],damages[1])
    12 
    13 #不如序列解包 即用 两个变量接分别收 demage函数的返回值
    14 
    15 dagame_skill1,damage_skill1 = damage(3,6)
    查看代码

    4,序列解包(接收返回值)和链式赋值

     1 #链式赋值
     2 a = 1
     3 b = 2
     4 c = 3
     5 a,b,c = 1,2,3
     6 a=b=c=1
     7 
     8 d = 1,2,3           
     9 print(type(d))   #<class ' tuple '>
    10 
    11 a,b,c = d        #序列解包
    12 
    13 a,b = [1,2,3]  #too many values to unpack(expected 2)
    查看代码

    5,必须参数与关键字参数

    ①,必须参数 实参 形参

    ②,关键字函数(可以不用考虑传入参数的顺序)

    例:

    1 def add(x,y):
    2     result = x + y
    3     return result
    4 
    5 c = add(y=3,x=2)
    6 
    7 c = add(x = 2) #报错 定义多少形参就要传递多少实参
    查看代码

    6,默认参数

    ①默认参数即使函数的某些参数赋有初值 (非默认参数必须放置到默认参数之前)

    例:

     1 def prinf_student_files(name,gender='男生',age=18,college='人民路')
     2     print('我叫' + name)
     3     print('我是' + gender)
     4     print('我今年' + str(age))
     5     print('我在' + college +'上学')
     6 
     7 print_student_files('大头')
     8 #输出 
     9 
    10 我叫大头
    11 我是男生
    12 我今年18岁
    13 我在人民路上学
    14 
    15 #默认参数必须放到参数列表后面  即必须参数不能放置到默认参数后面
    16 
    17 #如果要修改默认参数的值,全部用关键字参数传值的方式(XXX=XXX)修改,不能混用关键字参数传值与必须参数传值
    18 
    19 def cs(a,c,b=2):
    20     print(a,b,c)
    21 cs(a=5,b=6,c=7)
    22 #输出 5 6 7
    23 
    24 def cs(a,c,b=2):
    25     print(a,b,c)
    26 cs(5,b=6,7)
    27 #报错 
    查看代码
  • 相关阅读:
    Hibernate的注释该如何使用?每一个注释代表什么意思?
    J2SE总结(一)-------容器
    解决hibernate向mysql插入中文乱码问题(更改MySQL字符集)
    android程序员成长路径的思考
    Fragment总结
    onCreateView的一个细节--Fragment
    屏幕适配
    表驱动法3
    表驱动法2
    表驱动法1
  • 原文地址:https://www.cnblogs.com/tqing/p/10588717.html
Copyright © 2011-2022 走看看