Python 函数

函数

函数基本概念

​ 函数是对程序逻辑进行结构化或过程化的一种编程方法,将整块代码隔离成易于管理的小块,单独实现某一块功能。

​ 将重复代码在函数中避免了大量拷贝,既能节省空间,也可以保持一致性。

函数的定义域调用

定义函数

​ 在 Python 中使用 def 语句来创建函数

def function_name(args):
    '''
    函数体
    '''
  • 标题由 def 关键字,函数的名字以及参数的集合(可以为空)组成

调用函数

  • 向前引用,先定义后调用

  • 在调用函数时要在函数名后加()

  • 示例

    def test():
        print("This is a function test")
    test()
    
  • 函数调用过程

    • 函数被调用时,会单独开辟一段私有的内存空间

    • 函数运行结束后,会回到调用函数的位置,继续向下运行

      def b():
          print(3)
      def a():
          print(1)
          b()
          print(2)
      a()
      '''
      输出
      1
      3
      2
      '''
      

函数的返回值

  • 多数情况下,函数并不直接打印数据,而是向调用者返回一个值

  • 返回值使用 return 关键字

  • 没有 return 的话默认返回 None

def add():
    x = 10
    y = 5
    return x+y
print(add())
# 输出 15

函数的参数

形参与实参

参数类型实际参数
形式参数函数定义时,紧跟在函数名后面圆括号内的参数被称为形式参数,简称形参,占位,不参与实际运算
实际参数函数调用时,函数名后面的括号中的参数(可以是一个表达式)称为实际参数,简称实参
  • 注意:形参与实参要一一对应

  • 示例

    def add(x,y):
        sum=x+y
        return sum
    print(add(5,8))
    # 输出 13
    # 其中形参为 x y
    # 其中实参为 5 8
    

默认参数

def add(x=1,y=2):
    sum=x+y
    return sum
print(add())
# 不输入实参默认参数进行计算,输出 3

关键字参数(关键字传参)

​ 关键字参数的概念仅仅针对函数的调用。这种理念是让调用者通过函数调用中的参数名字来区分参数。这样规范允许参数缺失或者不按顺序

  • 在输入实参时指定形参

  • 示例

    def a(x,y,z):
        s = x*y+z
        return s
    print(a(4,2,3))          #4*2+3
    # 输出 11
    print(a(z=4,x=2,y=3))    #2*3+4
    # 输出 10
    
  • 安装 rquest 模块

    输入 DOS 命令

    pip install requests
    
    image-20230829204849458

变量的作用域

局部变量

​ 在函数内部定义的变量,随着函数的调用而被创建,函数调用完毕之后即销毁。局部变量在函数调用后才被创建,其作用范围仅限于函数内部

  • def test():
        x = 10
        print(x)
    test()
    # 调用 test() 函数可以条用局部变量 x
    print(x)
    # 在函数外直接调用变量 x 则报错(未定义)
    

全局变量

​ 在函数外部定义的变量

  • x=5
    def test():
        print(x)
    test()
    print(x)
    # 函数内外都可以使用变量 x 进行输出
    # 若函数内部有 x 的定义,优先使用函数的内部定义
    

名字空间

​ namespace

​ 任何时候,总有一个到三个活动的作用域,分别为局部、全局和内建。标识符(变量名,函数名) 的搜索顺序依次是局部、全局和内建

函数属性

  • 函数属性就是函数名加上句点能够访问到的内容

    函数名.__

  1. 在函数中直接输入字符串为函数的说明文档(注解)

    查看函数说明文档使用 函数名.__doc__

    def add(x,y):
        "此函数用来计算两个数的和"
        sum = x+y
        return sum
    print(add.__doc__)
    print(add(3,5))
    
    '''
    输出内容
    此函数用来计算两个数的和
    8
    '''
    

    image-20231031144241638

    多行函数说明

    def add(x,y):
        """
        多行
        函数
        说明
        """
        sum = x+y
        return sum
    print(add.__doc__)
    print(add(3,5))
    

    image-20231031144626256

内部函数

​ 在函数体内创建另外一个函数是完全合法的,这种函数叫做内部/内嵌函数

def a():
    print(f"This is function {a.__name__}")
    def b():
        print(f"This is function {b.__name__}")
    b()
a()

'''
输出
This is function a
This is function b
'''
  • 注意

    函数 b() 在函数 a() 内部,无法在函数 a() 外部直接调用函数 b()

在Python中,f-string是一种字符串格式化的方式,它允许在字符串中插入变量或表达式的值。使用f-string,可以在字符串中使用花括号 {} 来包裹变量或表达式,并在前面加上字母 f。当字符串被创建时,这些花括号内的内容会被替换为对应变量或表达式的值。

若字符串前不加 f

def a():
    print("This is function {a.__name__}")
    def b():
        print("This is function {b.__name__}")
    b()
a()

'''
输出
This is function {a.__name__}
This is function {b.__name__}
'''

位置参数

​ 位置参数,与 shell 脚本类似,程序名以及参数都以位置参数的方式传递给 Python 程序。
​ 使用 sys 模块的 argv 列表接收。

sys.argv[]是用来获取命令行输入的参数的(参数和参数之间空格区分) , sys.argv[0]表示代码本身文件路径,所以从参数1开始,表示获取的参数了

sys.argv,其实就是一个list,它是sys模块下的一个全局变量

1、sys.argv 是获取运行 python 文件的时候命令行参数,且以 list 形式存储参数

2、sys.argv[0] 表示代码本身文件路径

桌面新建 test.py 文件

import sys
print(int(sys.argv[1])+int(sys.argv[2]))

# 运行 , 打开cmd运行这个文件

在 cmd 命令窗口打开 python 文件并跟上参数

python test.py 10 20

在这里插入图片描述

随机密码生成器

    • 引用 string 模块

    • string.printable

      string.printable 是一个字符串常量,包含了所有可打印的 ASCII 字符。它包括了数字、字母、标点符号和空格等字符

    • 列出所有字符

      import string
      print(string.printable.strip())
      # 加 .strip 为了防止最后出现空白字符
      
    • 引用 random 模块

    • random.choice()

      非空序列中随机选取一个数据并返回,该序列可以是list、tuple、str、set

  1. 生成一个 13 位数的随机密码

    import string
    import random
    password = ""
    chars = string.printable.strip()
    for i in range(0,13):
        password += random.choice(chars)
    print(password)
    

    输出指定位数的随机密码

    import string
    import random
    chars = string.printable.strip()
    def password_egnerator(x = 8):
        password = ""
        for i in range(0,int(x)):
            password += random.choice(chars)
        return password
    x=input("请输入生成随机密码的位数")
    password = password_egnerator(x)
    print(password)
    # 输出生成的密码
    print(len(password))
    # 输出生成密码的位数
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gjl_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值