Python之参数类型、变量

一、参数类型

(一)形参与实参

  • 要使用局部变量时,只能通过return的方式返回
def my(name):
   #函数体
   return name

my('lrx') 
#name是形参,lrx是实参
  • 不写返回值的时候,返回的是None
def db_connect(ip,port=3306):
    print(ip,port)

res= db_connect('xxx.xx.xx.xx',3307)
print(res)
#结果:
#xxx.xx.xx.xx 3307
#None

(二)参数类型

1、位置参数

  • 必传参数
  • 调用时如果不填实参会报错
def my(name,sex): #name、sex是位置参数,调用时不填会报错
    return name

my('lrx')
#结果:
#TypeError: my() missing 1 required positional argument

2、默认值参数

  • 不必传参数
  • 调用时不填,就使用定义时的默认值
def db_connect(ip,port=3306):
    print(ip,port)

db_connect('xxx.xx.xx.xx')
#结果:
#xxx.xx.xx.xx 3306
  • 调用时填,就使用填的值
def db_connect(ip,port=3306):
    print(ip,port)

db_connect('xxx.xx.xx.xx',3307)
#结果:
#xxx.xx.xx.xx 3307

3、

def my4(s:str,d:dict): #提示应该传字符串类型和字典类型
    print(s)
    print(d)
my4(123,'sdf') #传的是数字类型和字符串类型
#结果:
#123
#sdf
#结果不报错,第一个是数字类型,第二个是字符串类型

4、可变参数

5、关键字参数

return的作用:

  • 结束函数,只要函数里面遇到return就马上结束。
  • 返回函数的处理结果。
def my2():
    for i in range(50):
        return i
print(my2())
#结果:
#0

变量赋值:

扫描二维码关注公众号,回复: 4246867 查看本文章
  • 多变量赋值为数值,单变量赋函数值为元组:
def my3():
    a=1
    b=2
    c=3
    return a,b,c

b,c,d=my3()
print(b,c,d)
s=my3()
print(s)
#结果:
#1 2 3
#(1, 2, 3)
  • 定义变量可以一起定义:
a,b,c=1,2,3

d=e=f=1

二、应用

1、操作文件:当不传默认值时,读文件,传字典时,写入json串。

import json
def op_file_tojson(file_name,dic=None):
    if dic:
        with open(file_name,'w',encoding='utf-8') as f:
            json.dump(dic,f)

    else:
        f=open(file_name,encoding='utf-8')
        f.seek(0)
        content=f.read()
        if content:
            res=json.loads(content.strip())
        else:
            res={}
        f.close()
        return res

op_file_tojson('users.txt',{"abc":"123","sgds":"3434"})
print(op_file_tojson('users.txt'))
#结果:
#{'abc': '123', 'sgds': '3434'}

三、局部变量与全局变量

  • 局部变量:只能在函数内部使用,如果外面想要使用,只能通过return的方式。
  • 全局变量:在文件里都可以使用,如果函数内部没有定义该变量,函数内部需要使用时就使用全局变量。
name='lrx' #全局变量
def get_name():
    name='abc'
    print(name)
get_name()
#结果:
#abc

name='lrx' #全局变量
def get_name():
    #name='abc'
    print(name)
get_name()
#结果:
#lrx
  • 想要修改全局变量,就要在变量前面先声明一下,使用global关键字
  • 只有string、int和元组才需要声明
name='lrx'
def get_name():
    name='abc'
    print(name)
get_name()
print('函数外面的name',name)
#结果:
#abc
#函数外面的name lrx

name='lrx'
def get_name():
    global name
    name='abc'
    print(name)
get_name()
print('函数外面的name',name)
#结果:
#abc
#函数外面的name abc

小练习:

name='lrx'
def get_name():
    global name
    name='abc'
    print('1、函数里面的name',name)
def get_name2():
    print('2、get_name2',name)
get_name2()
get_name()
print('3、函数外面的name',name)
#结果:
#2、get_name2 lrx
#1、函数里面的name abc
#3、函数外面的name abc

猜你喜欢

转载自www.cnblogs.com/yanwuliu/p/10023066.html
今日推荐