Python学习-Day12

1.文件修改的两种方式

# 一:函数的参数分为两大类

# 1.形参:在定义函数时,括号内定义的变量名,称之为形式参数,简称形参==》变量名

# def func(x,y):

#    x = 1

#    y = 2

#    print(x)

#    print(y)

# 2.实参:在调用函数时,括号内传入的值称之为实际参数,简称实参===》变量值

# func(1,2)

# 二:在python中参数的种类

# 1.位置参数:

# (1)位置形参:在函数定义阶段从左到右的顺序依次定义形参(变量名),称之为位置形参

# 特点:必须被传值

# def func(x,y):

#    print(x,y)

# func(1,2)

# func(1) # 少一个不行

# func(1,2,3) # 多一个也不行

# (2)位置实参:在函数定义阶段从左到右的顺序依次定义实参(传入的变量值),称之为位置实参

# 特点:按照位置传值,一一对应

# func(1,2,3,4,5,6)

# 2.关键字实参:在函数调用阶段按照key=value的形式为指定的形参传值,称之为关键字实参

# 特点:在传值时可以完全打乱顺序,但是仍然能指定形参传值

# def func(name, age, ):

#    print(name, age, )

# func("egon",18)

# func(18,"egon")

# func(age=18,name="egon")  # 写出关键字就可以随意赋值

# 注意:可以混用位置实参和关键字实参

# 1.但是位置实参必须放在关键字实参的前面

# 2.不能为同一个形参重复赋值

# def func(name, age, salary):

#    print(name)

#    print(age)

#    print(salary)

# func('egon',salary=3.1,age=18)

# func('egon',salary=3.1,18) # 错误

# func('egon', 18, salary=3.1)  # 错误

# func('egon',18,age=19,salary=3.3)  # 错误

# 3.默认形参:在函数定义阶段就已经为某个形参赋值,该形参称之为有默认值的形参,简称默认形参

# 特点:定义阶段就已经被赋值意味着在函数调用阶段可以不用为其赋值

# def func(x,y=2):

#    print(x,y)

# func(1)

# func(1,33333)

# 注意

# 1:默认形参放在位置形参的后面

# def func(y=2,x)  # 错误

#    pass

# 2 默认形参的值通常是不可变类型

# def func(name,hobby,hobbies=[]):

#    hobbies.append(hobby)

#    print("%s 的爱好是:%s" %(name,hobbies))

#

# func("egon",'play')

# func('lili','music')

# func("jack",'read')

'''

egon 的爱好是:['play']

lili 的爱好是:['play', 'music']

jack 的爱好是:['play', 'music', 'read']  在同一个地址空间连续添加了'''

# def func(name,hobby,hobbies=None):

#    if hobbies is None:

#        hobbies=[]

#    hobbies.append(hobby)

#    print("%s 的爱好是:%s" %(name,hobbies))

#

# func("egon",'play')

# func('lili','music')

# func("jack",'read')

'''

egon 的爱好是:['play']

lili 的爱好是:['music']

jack 的爱好是:['read']  先设置一个None 每次调用函数都生成一个新的列表空间'''

# 3 默认形参的值只在函数定义阶段被赋值一次,函数定义之后的改变对默认形参没有影响

# m=333

def func(x,y=333):# y=333

    print(x,y)

y=44444

func(1)# 如果不在实参中直接修改,默认的形参是不会改变的

def register(name,age,gender='male'):

print(name)

print(age)

print(gender)

register('egon',18,)

register('jack',20,)

register('tom',21,)

register('郑秀文',18,'female')# 针对不同类型的需求来定义函数可以减少代码量

2.函数

'''

1.什么是函数

    具备某一功能的工具===》函数

工具的使用:

        事先准备好工具=====》函数的定义

        遇到需要的运用场景就拿来用=====》函数的调用2.为什么要有函数  1.程序的组织结构不清晰,可读性差  2.如果要用到重复的功能,只能拷贝功能的实现代码===》代码冗余  3.可扩展性差3.如何使用函数

函数的使用原则:先定义,后调用

    定义函数        def 函数名(参数1,参数2,参数3。。。。。)’‘’

        文档注释‘’‘

        代码        return 返回值

调用函数:

        函数名(值1,值2,值3。。。。)'''

# 定义函数:申请内存空间把函数体代码保存下来,然后把内存地址绑定给函数名===》函数名 = 函数内存地址

# def sayhi():

#    print('='*10)

#    print('hello')

#    print('='*10)

# print(sayhi) # 打印的是函数名的内存地址

# 二:调用函数:函数名()===》函数的内存地址(),会触发函数体代码的运行

x =10

print(x)

# sayhi()

# 二:定义函数的三种格式

# 2.1:无参函数

# def login():

#    inp_name=input("your name: ").strip()

#    inp_pwd=input("your pwd: ").strip()

#    if inp_name == "egon" and inp_pwd == "123":

#        print('login successful')

#    else:

#        print('login error')

#

# login()

# def sayhi():

#    print('='*100)

#    print('hello')

#    print('='*100)

#

# sayhi()

# 2.2:有参函数

def sayhi(s, n):

print(s * n)

print('hello')

print(s * n)

sayhi('&', 10)

def max(x, y):

if x > y:

print(x)

else:

print(y)

max(10, 20)

# 2.3:空函数

def func():

pass

# 三:函数的调用

# return:

# 函数内可以有多个return,但只要执行一次函数就立刻结束,并把return后的值当作本次调用的结果返回

# 函数可以有三种形式的返回值

# 1.return 值:返回的就是值本身

# 2.return 值1,值2,值3...:返回一个元组

# 3.没有return:默认返回None

def func():

print(1)

return 123

res = func()

print(res)

# 四:函数调用的三种格式

# 4.1 语句形式:单纯地调用一下函数就完了

# def sayhi(s,n):

#    # s = '-'

#    # n = 20

#    print(s*n)

#    print('hello')

#    print(s*n)

# sayhi('*',30)

# 4.2 表达式形式:

def max2(x, y):

if x > y:

return x

else:

return y

# res=max2(11,22) * 12

# print(res)

# 4.3 可以把函数的调用当作值传给另外一个函数

# print(max2(11,22))

# 总结

# 函数的使用一定要分两个阶段去看:

# 1.定义阶段:只检测语法,不执行代码

# 2.调用阶段:执行函数代码体

# 如果发生语法错误,定义阶段会立马检测出来

# def func():

#    print('hello'

# 如果是逻辑错误,只能在调用阶段检测到

# def func():

#    xxx

# func()

# 示范1:

def bar():

print('from bar')

def foo():

print('from foo')

bar()

foo()

# 示范2:

def foo():

print('from foo')

def bar():

print('from bar')# 虽然这个函数是后定义的但是代码还是在定义阶段并不会发生错误

foo()# 到了调用阶段找到对应的代码直接调用就行了

3.函数的参数

# 一:函数的参数分为两大类

# 1.形参:在定义函数时,括号内定义的变量名,称之为形式参数,简称形参==》变量名

# def func(x,y):

#    x = 1

#    y = 2

#    print(x)

#    print(y)

# 2.实参:在调用函数时,括号内传入的值称之为实际参数,简称实参===》变量值

# func(1,2)

# 二:在python中参数的种类

# 1.位置参数:

# (1)位置形参:在函数定义阶段从左到右的顺序依次定义形参(变量名),称之为位置形参

# 特点:必须被传值

# def func(x,y):

#    print(x,y)

# func(1,2)

# func(1) # 少一个不行

# func(1,2,3) # 多一个也不行

# (2)位置实参:在函数定义阶段从左到右的顺序依次定义实参(传入的变量值),称之为位置实参

# 特点:按照位置传值,一一对应

# func(1,2,3,4,5,6)

# 2.关键字实参:在函数调用阶段按照key=value的形式为指定的形参传值,称之为关键字实参

# 特点:在传值时可以完全打乱顺序,但是仍然能指定形参传值

# def func(name, age, ):

#    print(name, age, )

# func("egon",18)

# func(18,"egon")

# func(age=18,name="egon")  # 写出关键字就可以随意赋值

# 注意:可以混用位置实参和关键字实参

# 1.但是位置实参必须放在关键字实参的前面

# 2.不能为同一个形参重复赋值

# def func(name, age, salary):

#    print(name)

#    print(age)

#    print(salary)

# func('egon',salary=3.1,age=18)

# func('egon',salary=3.1,18) # 错误

# func('egon', 18, salary=3.1)  # 错误

# func('egon',18,age=19,salary=3.3)  # 错误

# 3.默认形参:在函数定义阶段就已经为某个形参赋值,该形参称之为有默认值的形参,简称默认形参

# 特点:定义阶段就已经被赋值意味着在函数调用阶段可以不用为其赋值

# def func(x,y=2):

#    print(x,y)

# func(1)

# func(1,33333)

# 注意

# 1:默认形参放在位置形参的后面

# def func(y=2,x)  # 错误

#    pass

# 2 默认形参的值通常是不可变类型

# def func(name,hobby,hobbies=[]):

#    hobbies.append(hobby)

#    print("%s 的爱好是:%s" %(name,hobbies))

#

# func("egon",'play')

# func('lili','music')

# func("jack",'read')

'''

egon 的爱好是:['play']

lili 的爱好是:['play', 'music']

jack 的爱好是:['play', 'music', 'read']  在同一个地址空间连续添加了'''

# def func(name,hobby,hobbies=None):

#    if hobbies is None:

#        hobbies=[]

#    hobbies.append(hobby)

#    print("%s 的爱好是:%s" %(name,hobbies))

#

# func("egon",'play')

# func('lili','music')

# func("jack",'read')

'''

egon 的爱好是:['play']

lili 的爱好是:['music']

jack 的爱好是:['read']  先设置一个None 每次调用函数都生成一个新的列表空间'''

# 3 默认形参的值只在函数定义阶段被赋值一次,函数定义之后的改变对默认形参没有影响

# m=333

def func(x,y=333):# y=333

    print(x,y)

y=44444

func(1)# 如果不在实参中直接修改,默认的形参是不会改变的

def register(name,age,gender='male'):

print(name)

print(age)

print(gender)

register('egon',18,)

register('jack',20,)

register('tom',21,)

register('郑秀文',18,'female')# 针对不同类型的需求来定义函数可以减少代码量

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。