小编pyd*_*evd的帖子

在函数内声明函数是否有良好的编程风格?

我在PyQT4程序中有以下代码用于click处理程序:

def click_btn_get_info(self):
    task = self.window.le_task.text()
    self.statusBar().showMessage('Getting task info...')

    def thread_routine(task_id):
        order = self.ae.get_task_info(task_id)
        if order:
            info_str = "Customer: {email}\nTitle: {title}".format(**order)
            self.window.lbl_order_info.setText(info_str)
            self.statusBar().showMessage('Done')
        else:
            self.statusBar().showMessage('Authentication: failed!')

    thread = threading.Thread(target=thread_routine, args=(task,))
    thread.start()
Run Code Online (Sandbox Code Playgroud)

在线程中使用函数声明函数是一个好习惯吗?

python python-2.7

3
推荐指数
1
解决办法
102
查看次数

结构的指针算法给出了奇怪的结果

我有以下功能:

void deleteInventory( struct book** inventory )
{
    struct book* ptr = NULL;
    ptr = *inventory;

    while( length != 0)
    {
        free(ptr);
        length--;
        ++ptr;
    }
    free(inventory);
}
Run Code Online (Sandbox Code Playgroud)

结构体:

#define MAX_LENGTH 64
#define ISBN_LENGTH 11

struct book
{
    char isbn[ISBN_LENGTH];
    char title[MAX_LENGTH];
    char author[MAX_LENGTH];
    int year;
    float price;
};
Run Code Online (Sandbox Code Playgroud)

结构的总大小:147字节(11 + 64 + 64 + 4 + 4)sizeof(结构书)返回:148字节

我的库存变量是结构数组,包含3条记录

现在,在函数中调试的结果(地址没有高2字节):

inventory[0] = 0x1350
inventory[1] = 0x14e0
inventory[2] = 0x1670
Run Code Online (Sandbox Code Playgroud)

内存差异:400字节,好的

在第一次迭代时一切正常,首先记录删除没有问题

但是之后

++ptr;
Run Code Online (Sandbox Code Playgroud)

ptr将包含:0x13e4

inventory [0] - …

c pointers

2
推荐指数
2
解决办法
145
查看次数

BigO for dictionary方法'get(key)'

有人知道python的字典'get(key)'方法的O(?)是什么?

我已经使用cProfile模块对其进行了测试,并获得了字典中100,1000,10000,100000,1000000,100000000条记录的相同时间结果.

这是否意味着python的字典为任何密钥提供O(1)访问时间?

python python-2.7

1
推荐指数
1
解决办法
922
查看次数

脚本很慢

我有个问题.我需要编写一个bash脚本,它将在给定的路径中找到所有文件和目录,并显示一些有关结果的信息.允许时间:30秒.

#!/bin/bash

DIRS=0
FILES=0
OLD_FILES=0
LARGE_FILES=0
TMP_FILES=0
EXE_FILES=0
IMG_FILES=0
SYM_LINKS=0
TOTAL_BYTES=0

#YEAR_AGO=$(date -d "now - 1 year" +%s)
#SECONDS_IN_YEAR=31536000

function check_dir {
    for entry in "$1"/*
    do
        if [ -d "$entry" ]; then
            ((DIRS+=1))
            check_dir "$entry"
        else if [ -f "$entry" ]; then
                ((FILES+=1))
                #SIZE=$(stat -c%s "$entry")
                #((TOTAL_BYTES+=SIZE))
                #CREATE_DATE=$(date -r "$entry" +%s)
                #CREATE_DATE=$(stat -c%W "$entry")
                #DIFF=$((CREATE_DATE-YEAR_AGO))
                #if [ $DIFF -ge $SECONDS_IN_YEAR ]; then
                #   ((OLD_FILES+=1))
                #fi
             fi

        fi
    done
}

if [ $# -ne 2 ]; then
    echo "Usage: ./srpt …
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell scripting

1
推荐指数
1
解决办法
1079
查看次数

PyCharm IDE是否可以像在PyDev中那样在关键字参数,括号和运算符之前和之后放置空格?

在使用PyDev的Eclipse中,我可以在PyDev编辑器中设置首选项,以在保存时在分配关键字参数,括号和运算符之前和之后添加空格。例:

def create_socket(HOST):
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sock.connect((HOST,80))
    return sock
Run Code Online (Sandbox Code Playgroud)

Ctrl + S之后的代码如下所示:

def create_socket( HOST ):
    sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    sock.connect( ( HOST, 80 ) )
    return sock
Run Code Online (Sandbox Code Playgroud)

PyCharm可以做同样的事情吗?

python eclipse pydev pycharm

0
推荐指数
1
解决办法
1282
查看次数

标签 统计

python ×3

python-2.7 ×2

bash ×1

c ×1

eclipse ×1

linux ×1

pointers ×1

pycharm ×1

pydev ×1

scripting ×1

shell ×1

unix ×1