当前位置: 代码迷 >> 综合 >> 某马python day10
  详细解决方案

某马python day10

热度:37   发布时间:2023-12-13 09:21:54.0

python学习

python基础学习

  1. 函数的作用域
    变量作?域指的是变量?效的范围,主要分为两类:局部变量和全局变量
    局部变量:所谓局部变量是定义在函数体内部的变量,即只在函数体内部?效,所谓局部变量是定义在函数体内部的变量,即只在函数体内部?效。
    全局变量:指的是在函数体内、外都能?效的变量
    控制全局变量的关键词:global
a= 100
def testA():print(a)
def testB():# global 关键字声明a是全局变量global aa = 200print(a)
  1. 多函数的执行流程:
    公用全局变量:
# 多函数的执行流程:
glo_num=0;
def testA():global glo_num;glo_num=10;
def testB():print(glo_num);
testA();
testB();

返回值作为参数:

# 返回值作为参数:
def testC():return 50;
def testD(num):print(num);
jieguo=testC();
testC()
testD(jieguo);
  1. 函数的返回值:
    两个返回值的结果及其解决办法:
# 函数的返回值:
def return_num():return 1return 2
result = return_num();
print(result);   # 1
# 返回两个返回值的结果
def return_num1():return 1,2
result = return_num1();
print(result);   # (1, 2)
  1. 函数的参数
    位置参数:
    调?函数时根据函数定义的参数位置来传递参数。
# 位置参数
def user_info(name, age, gender):print(f'您的名字是{
      name}, 年龄是{
      age}, 性别是{
      gender}');
user_info('TOM', 20, '男');   #您的名字是TOM, 年龄是20, 性别是男

位置参数的注意事项:传递和定义参数的顺序及个数必须?致。
关键字参数:
函数调?,通过“键=值”形式加以指定。可以让函数更加清晰、容易使?,同时也清除了参数的顺序需
求,就是当我么的函数的关键字是乱序的时候,可以使用键值对的形式加以指定。

#关键字参数:
def user_info(name, age, gender):print(f'您的名字是{
      name}, 年龄是{
      age}, 性别是{
      gender}')
user_info('Rose', age=20, gender='?')
user_info('?明', gender='男', age=16)

缺省函数:
缺省参数也叫默认参数,?于定义函数,为参数提供默认值,调?函数时可不传该默认参数的值(注
意:所有位置参数必须出现在默认参数前,包括函数定义和调?)

# 缺省函数:
def user_info(name, age, gender='男'):print(f'您的名字是{
      name}, 年龄是{
      age}, 性别是{
      gender}')
user_info('TOM', 20)      # 您的名字是TOM, 年龄是20, 性别是男
user_info('Rose', 18, '?')   # 您的名字是Rose, 年龄是18, 性别是?

缺省函数的注意事项:当没有为缺省函数赋值的时候,使用默认值,如果有缺省函数进行赋值的时候,则将默认值进行更新。
不定长参数
不定?参数也叫可变参数。?于不确定调?的时候会传递多少个参数(不传参也可以)的场景。此时,可?包裹(packing)位置参数,或者包裹关键字参数,来进?参数传递,会显得?常?便,
注意:传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为?个元组(tuple),args是元组类型,这就是包裹位置传递

# 不定长参数:
def user_info(*args):print(args);
user_info(1);    # (1,)
user_info(1,3);   # (1, 3)
# 包裹关键字进行传递:?论是包裹位置传递还是包裹关键字传递,都是?个组包的过程。
def user_info1(**kwargs):print(kwargs);
user_info1(name="Tom",age=20,id=1001);  #{'name': 'Tom', 'age': 20, 'id': 1001}
  1. 拆包和变量值的互换:代码体现
# 元组的拆包
def user_info():return 1,2;
num1,num2 = user_info();
print(num1);   #1
print(num2);   #2
# 字典的拆包:
dict={
    "name":"Tom","age":"12"};
a,b=dict;   
print(a);   #name
print(b);   #age
print(dict[a]);   #Tom
print(dict[b]);   #12
# 实现元素的互换啊
a=1;b=2;c=0;
c=a;a=b;b=c;
print(a);   # 2
print(b);   # 1
#简单的代码实现元素的互换
a=3;b=4;
a,b=b,a;
print(a);   # 4 
print(b);   # 3
  1. 数据的引用:
    在python中数据通过引用进行传递的,我们可以根据id()函数来判定两个变量是不是同一个数值,我们可以将id值理解为那块内存的地址标识。
    注意:整型、浮点型、字符串、元组都是不可以改变的类型,如果将数据更改之后他们的地址值也会随着变化,但是列表、字典、集合可以在原有的地址的基础上进行数据得变化。
# 函数的引用
a=1;b=a;
print(a);
print(id(a));   # 地址 2799818572016
print(id(b));   # 地址 2799818572016
# 通过重新的赋值将数据的值进行更改
a=2
print(id(a));   # 地址 2799818572048
print(id(b));   # 地址 2799818572016
# 测试列表的引用:
a=[11,22];
b=a;
print(b);
print(id(a));   #2169181190144
print(id(b));   #2169181190144
# 通过添加数据将列表的值进行更改
a.append(33);
print(b);
print(id(a));   #2169181190144
print(id(b));   #2169181190144
  1. 将引用作为实参进行传入:
# 把引用作为实参进行传入:
def test(a):print(a);print(id(a));a=a+a;print(a);print(id(a));
b=100;
test(b);   #[100, 200] 1257273558336
c=[100,200];
test(c);   # [100, 200, 100, 200] 1257273558272