python基础:函数、深\浅拷贝、lambda、eval()、递归、 turtle()

一. 函数的分类

        1.内置函数:自带,无需导包,如 list()、len()等。

        2.标准库函数:自带,相对不常用,需导包。

        3.第三方库函数:外援,需下载和导包。

        4.自定义函数:自创,需定义。

二.函数的定义格式

        def my_function (形参):

                “‘文档注释’”

                函数体/若干句子

三.局部变量VS全局变量效率     

import math
import time
a = 30
def test_variable ():
    start = time.time()
    for x in range(10**7):
        a = 30
        math.sqrt(a)
    end = time.time()
    print("局部变量耗时:{0}".format(end-start))
def test_globle ():
    start = time.time()
    for x in range(10**7):
        math.sqrt(a)
    end = time.time()
    print("全局变量耗时:{0}".format(end-start))
test_variable()#局部变量耗时:1.363530158996582
test_globle()#全局变量耗时:1.4840335845947266

四.深浅拷贝及内存原理图

import copy #传参若发生拷贝则为浅拷贝!
a = [1,2,[3,4]]
b = copy.copy(a)
print("改变前a内容:{0};b内容:{1}".format(a,b))
b.append(6)
b[2].append(5)
print("浅拷贝:a内容:{0};b内容:{1}".format(a,b)) 

c = [1,2,[3,4]]
d = copy.deepcopy(c)
print("改变前c内容:{0};d内容:{1}".format(c,d))
d.append(6)
d[2].append(5)
print("深拷贝:c内容:{0};d内容:{1}".format(c,d))

五.参数的5中类型示例示例代码

def test(a,b,c):#位置参数
    print("{0}-{1}-{2}".format(a,b,c))
test(1,2,3)
def test(a,b,c=3):#默认参数
    print("{0}-{1}-{2}".format(a,b,c))
test(1,2)
def test(a,b,c):#命名参数
    print("{0}-{1}-{2}".format(a,b,c))
test(b=1,a=2,c=3)
def test(a,b,*c,**d):#一个*是元组存储; 两个*是字典存储
    print("{0}-{1}-{2}-{3}".format(a,b,c,d))
test(1,2,3,4,5,name=6,age=7)
def test(*a,b,c):#强制命名参数
    print("{0}-{1}-{2}".format(a,b,c))
test(1,b=2,c=3)

六.lambda表达式示例代码

a = lambda a,b,c:a*b*c  # lambda本质是函数的特例
def test(a, b, c):
    return a*b*c
print("使用lambda:{0};使用函数:{1}".format(a(2,2,2), test(2,2,2)))
b = [lambda a:a*3, lambda b:b*3, lambda c:c*3] #函数也是对象哈!python中一切皆对象
print("a:{0}; b:{1}; c:{2}".format(b[0](2), b[1](3), b[2](4)))

七.eval()函数示例代码

eval("print('abcd')") # 将字符串 str 当成有效的表达式来求值并返回计算结果。
print(eval('20+30'))
dict_num = dict(b=10, c=20)
print(eval("b+c",dict_num))

八.递归函数案例及内存分析:阶乘函数

def test(num):
    if num==1:
        return 1
    else:
        return test(num-1)*num
print(test(3))

九.turtle相关案例代码:绘制18*18棋盘格

import turtle
p = turtle.Pen()
for x in range(19):#先画19条横线
    if x%2==0:#此判断避免z字形绕路
        p.penup()#抬笔
        p.goto(-180,-180+20*x)
        p.pendown()#落笔
        p.goto(180, -180+20*x)
    else:
        p.penup()
        p.goto(180 , -180+20*x)
        p.pendown()
        p.goto(-180,-180+20*x)
for x in range(19):#再画19条竖线线
    if x%2==0:#此判断避免z字形绕路
        p.penup()
        p.goto(-180+20*x,180)
        p.pendown()
        p.goto(-180+20*x, -180)
    else:
        p.penup()
        p.goto(-180+20*x ,-180)
        p.pendown()
        p.goto(-180+20*x,180)
turtle.done()#避免画框自动关闭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值