python基础篇

python学习笔记:

(1)初学python    
name=raw_input()  输入变量值(返回值是字符串)
name=raw_input("please enter your name")
print"hello",name
raw_input和print是在命令行下面最进本的输入输出。 但是,用户也可以通过其他更高级的图形界面完成输入和输出,比如,在网页上的一个文本框输入自己的名字,点击“确定”后在网页上看到输出信息。

以#开头的是注释,可以任意写,机器忽略。
字符串直接索引法。"hello"[1]
函数list("hello")=['h','e','l','l','o']  列出表元素
(2)语法和函数
 由于python源代码也是一个文本文件,所以当你的源代码中包含中文时候时,在保存源代码时需要务必指定保存为UTF-8编码
# -*- coding: utf-8 -*-
格式化字符串:
 %d 整形变量   %f浮点型变量  %s字符串  %x十六进制
int()发现一个字符串并不是合法的数字时就报错。
len()函数可以获得list元素的个数。索引访问每一个位置的元素。除了计算索引位置元素外,还可以用-1座索引,直接获取最后一个元素。
append()函数可以附加一个参数。一般在列表中添加元素,eg:names.append("元素")
insert()函数一般也是插入某个元素到列表中。eg:names.insert(位置,"内容")
pop()函数删除列表中的某个元素,eg:names.pop(i), i为索引位置,删除指定位置的元素内容。
列表元素直接赋值,eg: names[1]="2"
列表中可以包含列表。
eg: str=["a","23","true"]
         names.append(str)            (ok)
tuple,定义一个不变元组,指向不变。(存储单元不变)

list与tuple区别就是[]和()的区别,list可变,tuple指向不变。

字典dic方式存储数据。key-value定位元素值。
n={"aa":22,"bb":33,"cc":44}
n.get()通过key-value定位元素值。
n.pop()通过key-value删除元素。

(3)函数定义和参数特征

在python中,定义一个函数要使用def语句,依次写出函数名,括号,括号中的参数和冒号:,然后在缩进模块中编写函数体,函数的返回值用return语句返回。如果没有return语句,返回值就是none
eg:  def nop():
              pass         
 如果没pass,代码运行会有语法错误。 pass作为占用符,比如没有想好代码。

自定义函数参数可以有多个,多个函数可以定义多个默认值。
默认参数设置,注意事项:
1,必须参数在前,默认参数在后,否则python解释器会报错。
2,设置参数事,习惯把默认参数变化大的放在前面,变化小的参数放在后面。默认参数降低函数调用难度。可以不按照顺序提供参数,但是需要把参数名字写上。没有提供参数的使用默认值。
 
可变参数允许你传入0个或者任意个参数,这些可变参数在函数调用时自动组装为一个tuple

递归函数优点是逻辑清晰。理论上,所有递归函数都可以写成循环的方式。但是循环不如递归函数逻辑清晰。
使用递归函数需要防止栈溢出,在计算机中,函数调用时通过栈这种数据结构实现的,每当进入一个函数调用,栈就会加一个栈帧,每当函数返回就会减一层栈帧,由于栈的大小不是无限的,所以,递归调用过多会导致栈溢出。
解决栈溢出方法是用尾递归优化。在函数返回时,调用自身本身并且return语句不包含表达式,这样编译器或者解释器就可以把尾递归做优化。使递归本身无论调用多少次,都只是占用一个栈帧,不会出现栈溢出现象
eg:  def fact(n):
              return fact_inter(n,1)
          def  fact_inter(num.product):
               if num==1:
                        print product
               return fact_iter(num-1,num*product) 
当编译器检测到一个函数调用是尾递归的时候,它就覆盖当前的活动记录而不是在栈中去创建一个新的。编译器可以做到这点,因为递归调用是当前活跃期内最后一条待执行的语句,于是当这个调用返回时栈帧中并没有其他事情可做,因此也就没有保存栈帧的必要了。通过覆盖当前的栈帧而不是在其之上重新添加一个,这样所使用的栈空间就大大缩减了,这使得实际的运行效率会变得更高。

高级特性:一行代码能完成的事绝不用5行代码时间。
eg:L[0:3]切片索引,如果第一个索引是0,可以省略。
eg:     L=[]
             for x in range(10):
                 L.append(x*x)
              print L
x会自动指向下一个元素,x自动+1但是指向的是下一个元素。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值