函数
函数基本概念
函数是对程序逻辑进行结构化或过程化的一种编程方法,将整块代码隔离成易于管理的小块,单独实现某一块功能。
将重复代码在函数中避免了大量拷贝,既能节省空间,也可以保持一致性。
函数的定义域调用
定义函数
在 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
变量的作用域
局部变量
在函数内部定义的变量,随着函数的调用而被创建,函数调用完毕之后即销毁。局部变量在函数调用后才被创建,其作用范围仅限于函数内部
-
例
def test(): x = 10 print(x) test() # 调用 test() 函数可以条用局部变量 x print(x) # 在函数外直接调用变量 x 则报错(未定义)
全局变量
在函数外部定义的变量
-
例
x=5 def test(): print(x) test() print(x) # 函数内外都可以使用变量 x 进行输出 # 若函数内部有 x 的定义,优先使用函数的内部定义
名字空间
namespace
任何时候,总有一个到三个活动的作用域,分别为局部、全局和内建。标识符(变量名,函数名) 的搜索顺序依次是局部、全局和内建
函数属性
-
函数属性就是函数名加上句点能够访问到的内容
函数名.__
-
在函数中直接输入字符串为函数的说明文档(注解)
查看函数说明文档使用
函数名.__doc__
例
def add(x,y): "此函数用来计算两个数的和" sum = x+y return sum print(add.__doc__) print(add(3,5)) ''' 输出内容 此函数用来计算两个数的和 8 '''
多行函数说明
def add(x,y): """ 多行 函数 说明 """ sum = x+y return sum print(add.__doc__) print(add(3,5))
内部函数
在函数体内创建另外一个函数是完全合法的,这种函数叫做内部/内嵌函数
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
-
-
生成一个 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)) # 输出生成密码的位数