码迷,mamicode.com
首页 > 编程语言 > 详细

python学习笔记-函数

时间:2018-04-20 23:35:40      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:提高   span   seek   count   NPU   load   单元   false   txt   

一、函数是什么?

  函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。

  定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。

二、函数(方法、功能)的作用:

  1.提高代码的复用性;

  2.让代码更简洁

三、python中函数的定义:

  定义函数使用def关键字,后面是函数名,函数名不能重复

def sayHello():          #函数名
     print(hello)      #函数体
#函数不调用是不会被执行的
sayHello()   #函数名加括号调用函数

四、函数的参数:

形参:形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。

实参:实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。函数调用结束返回主调用函数后则不能再使用该形参变量。

def calc(a,b):  #形参,形式参数
    #a、b是位置参数,必填参数
     res=a*b
     print(%s*%s=%s%(a,b,res))

calc(7,8)       #实参,实际参数

简单点说,形参就是函数接收的参数,而实参就是你实际传入的参数。

def op_file(file_name,conent=None):
    #默认值参数,它是非必填的
    f = open(file_name,a+,encoding=UTF-8)  #‘a+‘能读也能写
    f.seek(0)
    if conent:   #不为空代表写,为空代表读
        f.write(conent)
        f.flush()
    else:
        all_users=f.read()
        return all_users     #调用函数之后,返回什么结果
    f.close()
res=op_file(‘a.txt‘)
print(res)

 局部变量:函数里面定义的变量,都是局部变量,只能在函数里面用,出了函数之后就不能用了

全局变量:公共的变量,都可以用的变量

  1.不安全,因为所有人都可以改;

  2.全局变量会一直占着内存

name=张三
# 全局变量
#如果要改全局变量的话,要先声明一下修改的值是全部变量
def sayName():
    global name     #global声明全局变量
    name = 李四
    print(name1,name)

sayName()
print(name2,name)

return的作用:

  1.把函数处理的结果返回回来;

  2.立即结束函数,函数里面遇到return,函数会立即结束

def h():
    #函数里面遇到return函数就立即结束了
    for i in range(5):
        print(i)
        if i==3:
            return    #只写一个return的话,就返回Noneres=h()
print(res)

 

import string
def hr(pwd):
    #长度6-11
    #字母和数字
    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=hr(‘abc123‘)     #函数里面如果没有return的话,默认返回Noneprint(res)

判断是否是小数:

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
    return False
# print(is_float(‘1.5‘))

常量:一个不变的值,定义常量变量名要大写

josn串:一串字符串,里面只有双引号,没有单引号

loads:传的是字符串

import json
#json串是一个字符串
f=open(product.json,encoding=UTF-8)
res=f.read()
product_dic=json.loads(res)   #loads把json串变成Python的数据类型
print(product_dic.get(product_info))

load():传一个文件对象,会帮你读文件

import json
#json串是一个字符串
f=open(product.json,encoding=UTF-8)
print(json.load(f)) #不带s,好处:不需要再read一次,

字典转换成json

d={
    a:{
        addr:北京,
        age:28
    },
    b:{
        addr:上海,
        age:18
    }
}
fw=open(user_info.json,w,encoding=utf-8)
dic_json=json.dumps(d,ensure_ascii=False,indent=4)   
#字典转换成json,ensure_ascii显示中文,indent=4缩进4个空格 fw.write(dic_json)

dump:

d={
    a:{
        addr:北京,
        age:28
    },
    b:{
        addr:上海,
        age:18
    }
}
fw=open(user_info.json,w,encoding=utf-8)
json.dump(d.fw,ensure_ascii=False,indent=4)

函数的不固定参数:

*非必填参数,无参数个数限制,传过来的参数放在元祖里

def syz(*args):    #参数组
    print(args)
    username=args[1]
    pwd=args[2]

syz()
syz(huang,123,dasd)

打印结果:
(‘huang‘,‘123‘,‘dasd‘)

**

def sys2(**kwargs):   #关键字参数
    print(kwargs)

sys2()
sys2(name=nhy,age=19)
sys2(nhy)

打印结果:
{}
{“name”:‘nhy‘,"age"=19}
报错

 

小练习:

import json

def op_data(filename,dic=None):
    if dic:  #写入进去
        with open(filename,w,encoding=utf-8) as fw:
            json.dump(dic,fw,ensure_ascii=False,indent=4)
    else:
        with open(filename,encoding=utf-8) as fr:
            return json.load(fr)

FILE_NAME=user_info.json
all_users=op_data(user_info.json)
for i in range(3):
    choice = input(输入:1.注册、2删除)
    if choice==1:
        username=input(username:)
        password=input(password:)
        if username not in all_users:
            all_users[username]=password
            op_data(FILE_NAME,all_users)
    elif choice==2:
        username=input(username:)
        all_users.pop(username)
        op_data(FILE_NAME,all_users)

 

python学习笔记-函数

标签:提高   span   seek   count   NPU   load   单元   false   txt   

原文地址:https://www.cnblogs.com/huangr/p/8887577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!