python学习(十三)函数

时间:2021-12-25 03:31:35

使用函数可提高代码的复用性,让代码更简洁,简化代码

1、函数格式

def sayhello(): #函数名
    print('hello') #函数体
sayhello()#调用函数

注意:如果没有最后一句,调用函数,函数是不会执行的

2、函数参数

1)位置参数,必填

def calc(a,b):  #形参--形式参数
    res=a*b
    print('%s*%s=%s'%(a,b,res))
calc(7,8)  #实参--实际参数   若不写参数,会报错

函数定义的参数为形式参数,在调用函数的时候,需要填写实际参数值,若不填写,则会报错

2)默认参数,非必填

def op_file(filename,content=None):
    f=open(filename,'a+',encoding='utf-8')
    f.seek(0)
    if content:
        f.write(content)
        f.flush()
    else:
        all_user=f.read()   #all_user是局部变量,出了函数就没有用
    f.close()

op_file('a.txt')

content参数给了默认为none,所以在调用参数的时候,即使不写该参数的值,仍可以调用成功

还有一点就是all_user在函数内,属于局部变量,出了这个函数就没有用,比如出了函数想打印all_user的值,会报错

那么怎么才能将all_user值打印出来呢,就需要将函数中的结果返回回来,并在函数外将函数的返回值赋给其他参数,再打印该参数

def op_file(filename,content=None):
    f=open(filename,'a+',encoding='utf-8')
    f.seek(0)
    if content:
        f.write(content)
        f.flush()
    else:
        all_user=f.read()
        return all_user #调用完函数后,返回什么结果
    f.close()
res=op_file('a.txt') #将返回的内容赋给res
print(res)

3、return用法:

return 用来返回结果,不是必须写的,如果在函数中遇到return,则立马结束整个函数

用法在上面一段代码中可以看见,也可以只写一个return,而没有后面return内容,则返回None

def h():
    for i in range(5):
        print(i)
        if i==3:
            return#只写一个return的话,就返回None
res=h()
print(res)

4、函数练习1

检查密码是否合法,长度6-11,有字母和数字

import string
def check(pwd):
    if len(pwd)>5 and len(pwd)<12:
        if set(pwd)&set(string.ascii_letters) and set(pwd)&set(string.digits):
            print('密码合法')
        else:
            print('密码不合法')
    else:
        print('密码不合法!')
res=check('asd1234')
print(res)

5、函数练习2

判断是否都是小数的函数
分析:
小数点个数 .count()
按照小数点进行分割
正小数:小数点左边是整数,右边也是整数 isdigits()
负小数:小数点左边是以负号开头,但是只有一个负号,右边也是整数
def is_float(s):
    s=str(s)
    if s.count('.')==1:
      s_list=s.split('.')
      left=s_list[0]
      right=s_list[1]
      if left.isdigit() and right.isdigit():
          return True
      elif left.startswith('-') and left.count('-')==1:
        if left.split('-')[1].isdigit() and right.isdigit():
            return True
    else:
        return  False